问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

二叉树的直径

创作时间:
作者:
@小白创作中心

二叉树的直径

引用
CSDN
1.
https://blog.csdn.net/weixin_57865902/article/details/139620475

给你一棵二叉树的根节点,返回该树的 直径

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点。两节点之间路径的 长度 由它们之间边数表示。

示例 1:

**输入:**root = [1,2,3,4,5]
**输出:**3
**解释:**3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:

**输入:**root = [1,2]
**输出:**1

解题思路

对于一个结点,找出左边的最大深度 再找出右边的最大深度 再相加加2就是该节点的最大直径。利用ans ,更新获取整个树的最大直径。

Java代码

class Solution {
    public int ans = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        maxDepth(root);
        return ans;
    }
    public int maxDepth(TreeNode root) {
        if(root == null) return -1;
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        ans = Math.max(ans, left + right + 2);
        return Math.max(left, right) + 1;
    }
    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
        TreeNode(int val, TreeNode left, TreeNode right) {
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }
}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号