543. 二叉树的直径

谁都会走 提交于 2020-03-11 01:50:16

 

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。

示例 :
给定二叉树

          1
         / \
        2   3
       / \     
      4   5    
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

注意:两结点之间的路径长度是以它们之间边的数目表示。

    int res = 1;
    public int diameterOfBinaryTree(TreeNode root) {
        helper(root);
        return res-1;//所有节点个数减1,即为直径
    }
    public int helper(TreeNode root){
        if(root==null){
            return 0;
        }
        int l = helper(root.left);//左子树深度
        int r = helper(root.right);//又子树深度
        res = Math.max(res,l+r+1);//更新直径为最大值
        return Math.max(l,r)+1;//返回子树的深度
    }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!