关于leetcode个人解题总结:刷题21-二叉树的直径

543. 二叉树的直径
要点:根节点要做的事件是:把左子树和右子树的高度相加,再加1即可失去该节点所形成的一条直径长度,用一个两头变量max记录最长直径,最终max就是后果。计算直径:1.获得左子树高度 2.获得右子树高度 3.加一,即把根节点也加进去,因而本题本质就是后续遍历,只是在后续遍历过程顺便计算每个子节点的高度。

class Solution {
    int max = Integer.MIN_VALUE;
    public int diameterOfBinaryTree(TreeNode root) {
        height(root);
        return max - 1;
    }
    public int height(TreeNode root){
        if(root == null) return 0;
        int left = height(root.left);
        int right = height(root.right);
        max = Math.max(left + right + 1,max);
        return Math.max(left,right) + 1;
    }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理