543. Diameter of Binary Tree

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
private static class State {
private int maxNodes = 1;
}

public int diameterOfBinaryTree(TreeNode root) {
State state = new State();
maxDepth(root, state);
return state.maxNodes - 1;
}

private int maxDepth(TreeNode node, State state) {
if (node == null) {
return 0;
}

int leftMaxDepth = maxDepth(node.left, state);
int rightMaxDepth = maxDepth(node.right, state);

int maxNodes = leftMaxDepth + 1 + rightMaxDepth;
state.maxNodes = Math.max(state.maxNodes, maxNodes);
return Math.max(leftMaxDepth, rightMaxDepth) + 1;
}
}

References

543. Diameter of Binary Tree