Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @interface TreeNode: NSObject
- @property (nonatomic) TreeNode* left;
- @property (nonatomic) TreeNode* right;
- @property (nonatomic) id data;
- @end
- @implementation TreeNode
- @end
- @interface Solution: NSObject
- -(int)treeDiameter:(TreeNode *)root;
- @end
- @implementation Solution
- -(int)treeDiameter:(TreeNode *)root {
- int d = 0;
- [self pfx_deepestChild:root mostDiameter:&d];
- return d;
- }
- -(int)pfx_deepestChild:(TreeNode *)root mostDiameter:(int *)diameter {
- if(!root) return 0;
- int deepestLeft = 0;
- int deepestRight = 0;
- if(root.left) deepestLeft = [self pfx_deepestChild:root.left mostDiameter:diameter];
- if(root.right) deepestRight = [self pfx_deepestChild:root.left mostDiameter:diameter];
- int localDiameter = deepestLeft + deepestRight + 1;
- *diameter = MAX(localDiameter, *diameter);
- return MAX(deepestLeft, deepestRight) + 1;
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement