LeetCode543二叉树的直径(递归)

题目链接
在这里插入图片描述
题目乍一看以为是在求二叉树深度,但其实是求所有几点中左右子树深度和最大的值
因为题目中说了这条最长路径可能不经过根节点 下面让我们看两组例子
在这里插入图片描述
那么现在只需要在二叉树的深度上进行一点小变形就能做出来了
每次递归的时候维护一个左右子树深度和的最大值即可

    int res = 0;
    public int diameterOfBinaryTree(TreeNode root) {
    
    
        getdeep(root);
        return res;
    }
    private int getdeep(TreeNode root){
    
    
        if (root == null) return 0;
        int left = getdeep(root.left);
        int right = getdeep(root.right);
        res = Math.max(res,left+right);
        return Math.max(left,right)+1;
    }

猜你喜欢

转载自blog.csdn.net/qq_43434328/article/details/114754561