leetcode每日一题 -二叉树的直径

题目分析

根据题目,我们可以转换思想到求二叉树的深度,其中左子树深度加上右子树深度就是二叉树某一个节点的直径,在这个过程中使用一个全局变量记录最大解即可。

Java代码

public int res;
    public int diameterOfBinaryTree(TreeNode root) {
        res = 0;
        depth(root);
        return res;
    }
    private int depth(TreeNode root){
        if(root == null){
            return 0;
        }
        int left = depth(root.left);
        int right = depth(root.right);
        System.out.println("root = " + root.val);
        System.out.println("left = " + left);
        System.out.println("right = " + right);
        // 返回根节点深度
        res = Math.max(res,left+right+1);
        return Math.max(left,right) + 1;
    }

你可能感兴趣的:(LeetCode,二叉树)