Skip to content

Diameter of Binary Tree

Topic: 09. Trees

Link: LeetCode 543 - Diameter of Binary Tree

1. Logical Breakdown

  • [x] Core Logic: Longest path = LeftDepth + RightDepth.
  • [x] Traversal: Post-order DFS.

2. Visualization

graph TD Root --> L["Left Depth"] Root --> R["Right Depth"] Sum["Max = L + R"]

3. Complexity

  • Time: O(N)
  • Space: O(H)

4. Code

package com.dsa.trees;

public class DiameterOfBinaryTree {
    public static class TreeNode {
        int val;
        TreeNode left, right;
        TreeNode(int val) { this.val = val; }
    }

    int maxDiameter = 0;

    public int solve(TreeNode root) {
        maxDepth(root);
        return maxDiameter;
    }

    private int maxDepth(TreeNode node) {
        if (node == null) return 0;
        int left = maxDepth(node.left);
        int right = maxDepth(node.right);
        maxDiameter = Math.max(maxDiameter, left + right);
        return Math.max(left, right) + 1;
    }
}