Advertisement
bayareabelletrist

Tree Diameter

Jul 22nd, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @interface TreeNode: NSObject
  2. @property (nonatomic) TreeNode* left;
  3. @property (nonatomic) TreeNode* right;
  4. @property (nonatomic) id data;
  5. @end
  6.  
  7. @implementation TreeNode
  8. @end
  9.  
  10. @interface Solution: NSObject
  11. -(int)treeDiameter:(TreeNode *)root;
  12. @end
  13.  
  14. @implementation Solution
  15. -(int)treeDiameter:(TreeNode *)root {
  16.     int d = 0;
  17.     [self pfx_deepestChild:root mostDiameter:&d];
  18.     return d;
  19. }
  20.  
  21. -(int)pfx_deepestChild:(TreeNode *)root mostDiameter:(int *)diameter {
  22.     if(!root) return 0;
  23.    
  24.     int deepestLeft = 0;
  25.     int deepestRight = 0;
  26.     if(root.left) deepestLeft = [self pfx_deepestChild:root.left mostDiameter:diameter];
  27.     if(root.right) deepestRight = [self pfx_deepestChild:root.left mostDiameter:diameter];
  28.    
  29.     int localDiameter = deepestLeft + deepestRight + 1;
  30.     *diameter = MAX(localDiameter, *diameter);
  31.    
  32.     return MAX(deepestLeft, deepestRight) + 1;
  33. }
  34. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement