LeetCode:543. 二叉树的直径

简介

题目链接:https://leetcode.cn/problems/diameter-of-binary-tree/description/

解决方式:二叉树 + 递归、DFS

递归

实现思路:

递归迭代每一个二叉树节点,计算经过该节点的直径,即左右子树长度和。维护一个全局最大直径,每个节点计算出的直径与全局最大直径对比,始终维护全局最大直径最大。这样就可以寻找出二叉树的最大直径了。

这其实也就相当于在计算二叉树的深度代码之上,添加一个计算节点的"直径",同时维护最大直径。

java 复制代码
class Solution {
    // 全局最大直径
    private int max = 0;

    public int diameterOfBinaryTree(TreeNode root) {
        // 递归
        depth(root);
        // 返回结果
        return max;
    }

    private int depth(TreeNode node){
        // 递归终止条件
        if(node == null) return 0;

        // 递归公式
        // 计算当前节点左右子树的深度
        int left = depth(node.left);
        int right = depth(node.right);
        // 计算直径并与全局最大直径对比
        max = Math.max(max, left + right);
        // 返回当前节点深度
        return Math.max(left, right) + 1;
    }
}
相关推荐
QiLinkOS1 小时前
QiLink 技术委员会选举实施细则
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
我材不敲代码1 小时前
Python基础: 函数超全详解:定义、参数、返回值、作用域与递归
开发语言·python·算法
程序员杰哥1 小时前
接口自动化测试:多环境配置实战
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
罗超驿1 小时前
11.LeetCode 1004. 最大连续1的个数 III | 滑动窗口解法详解(Java)
java·算法·leetcode
QiLinkOS1 小时前
发明人与专利价值共生逻辑
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法
凯瑟琳.奥古斯特1 小时前
10道数据库原理精选题
开发语言·数据库·职场和发展·数据库开发
计算机安禾2 小时前
【算法分析与设计】第21篇:回溯法的状态空间树与剪枝函数设计
大数据·人工智能·算法·机器学习·数据挖掘·剪枝
磊 子2 小时前
STL之set以及set和map区别
开发语言·c++·算法
Promise微笑2 小时前
算法突围:“双核四驱”理论下的“官网”AI引用概率提升指南
人工智能·算法·chatgpt