自学内容网 自学内容网

力扣543.二叉树的直径

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int maxDiameter=0;
    // max{所有节点处拐弯所得最长路径长度}
    public int diameterOfBinaryTree(TreeNode root) {
        //当前子树的最长链长度
        dfs(root);
        return maxDiameter;
    }
    public int dfs(TreeNode root){
        //递归终止条件
        if (root==null) return -1;
        // 当前节点拐弯的最长路径的长度 = 左子树的最长链长度+右子树的最长链长度+2
        int l = dfs(root.left)+1;
        int r = dfs(root.right)+1;
        maxDiameter=l+r>maxDiameter?l+r:maxDiameter;
        return l>r?l:r;
    }
}

不要以为是根节点的左边最长链+右边最长链长度
如下:
在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_59191887/article/details/145111636

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!