美文网首页
543. 二叉树的直径

543. 二叉树的直径

作者: geaus | 来源:发表于2021-11-17 18:34 被阅读0次

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

    示例 :
    给定二叉树
    
              1
             / \
            2   3
           / \     
          4   5    
    返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
    

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

    有些类似之前做的二叉树最大路径和这题。当前节点的直径等于节点左枝的最大深度+节点右枝的最大深度,当前节点为root的树的直径则是当前节点直径、当前节点左枝的直径及当前节点右枝的直径,三者最大值。

    class Solution {
    public:
        int helper(TreeNode* root, int& ans){
            if(root==nullptr)
                return 0;
            
            int leftDepth = helper(root->left, ans);
            int rightDepth = helper(root->right, ans);
            int ret = max(leftDepth, rightDepth) + 1;
            ans = max(ans, leftMax+rightMax);
    
            return ret;
        }
        int diameterOfBinaryTree(TreeNode* root) {
            int ans = 0;
            helper(root, ans);
            return ans;
        }
    };
    

    相关文章

      网友评论

          本文标题:543. 二叉树的直径

          本文链接:https://www.haomeiwen.com/subject/lwlzzltx.html