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