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