Example:
20
/ \
15 30
/ \ \ diameter ==> 7
14 18 35
/ \ /
17 19 32
public int[] diameterAndHeight
(TreeNode root )
int[] leftResult = diameterAndHeight
(root.left)
int[] rightResult = diameterAndHeight
(root.right)
leftDiameter = leftResult[0];
rightDiameter = rightResult[0];
height =
Math.max(leftResult[1], rightResult[1])
+ 1
rootDiameter = leftResult[1]
+ rightResult[1] + 1
finalDiameter = Math.max(rootDiameter,
Math.max(leftDiameter, rightDiameter));
heightDiameter[0] = finalDiameter;
heightDiameter[1] = height;
return heightDiameter
public int diameter(TreeNode root) { }
C
Java
Python