The insight
Diameter through node = height(left) + height(right). Track max as we compute heights.
Advertisement
Implementation
int diameter = 0;
int height(Node n) {
if (n == null) return 0;
int leftH = height(n.left);
int rightH = height(n.right);
diameter = max(diameter, leftH + rightH);
return 1 + max(leftH, rightH);
}Advertisement
Return in edges vs nodes
Path length in edges vs nodes differs by 1. Read problem carefully.