Diameter of Binary Tree — Tree DP Height Trick

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Problem 367 · Diameter of Binary Tree

Difficulty: Medium · Pattern: Tree DP (depth function)

Intuition

At each node, the longest path through it = left_depth + right_depth. Track global max.

Solutions

# Python
def diameterOfBinaryTree(root):
    self_ans = [0]
    def depth(node):
        if not node: return 0
        l, r = depth(node.left), depth(node.right)
        self_ans[0] = max(self_ans[0], l+r)
        return max(l,r)+1
    depth(root)
    return self_ans[0]
// Java
int ans = 0;
public int diameterOfBinaryTree(TreeNode root) { depth(root); return ans; }
int depth(TreeNode node) {
    if (node==null) return 0;
    int l=depth(node.left), r=depth(node.right);
    ans=Math.max(ans,l+r);
    return Math.max(l,r)+1;
}
// C++
int ans=0;
int depth(TreeNode* node) {
    if (!node) return 0;
    int l=depth(node->left), r=depth(node->right);
    ans=max(ans,l+r);
    return max(l,r)+1;
}
int diameterOfBinaryTree(TreeNode* root) { depth(root); return ans; }

Complexity

  • Time: O(n)
  • Space: O(h)

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro