File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ private static int treeDiameter = 0;
3
+
4
+ public int diameterOfBinaryTree(TreeNode root) {
5
+ calculateHeight(root);
6
+ return treeDiameter-1;
7
+ }
8
+
9
+ private static int calculateHeight(TreeNode currentNode) {
10
+ if (currentNode == null)
11
+ return 0;
12
+
13
+ int leftTreeHeight = calculateHeight(currentNode.left);
14
+ int rightTreeHeight = calculateHeight(currentNode.right);
15
+
16
+ // if the current node doesn't have a left or right subtree, we can't have
17
+ // a path passing through it, since we need a leaf node on each side
18
+ if (leftTreeHeight != 0 && rightTreeHeight != 0) {
19
+
20
+ // diameter at the current node will be equal to the height of left subtree +
21
+ // the height of right sub-trees + '1' for the current node
22
+ int diameter = leftTreeHeight + rightTreeHeight + 1;
23
+
24
+ // update the global tree diameter
25
+ treeDiameter = Math.max(treeDiameter, diameter);
26
+ }
27
+
28
+ // height of the current node will be equal to the maximum of the heights of
29
+ // left or right subtrees plus '1' for the current node
30
+ return Math.max(leftTreeHeight, rightTreeHeight) + 1;
31
+ }
32
+ }
You can’t perform that action at this time.
0 commit comments