- 思路
这个跟昨天那个求二叉树的最大路径和的思路相同,更简单一点,只需要深度优先搜索就行
int max(int a, int b){
if(a < b)
return b;
else
return a;
}
int root_max(struct TreeNode* root, int* sum){
if(root==NULL)
return 0;
int left = root_max(root->left, sum);
int right = root_max(root->right, sum);
int new = left + right + 1;
*sum = max(*sum, new);
return max(left, right)+1;
}
int diameterOfBinaryTree(struct TreeNode* root){
if(root==NULL)
return 0;
int *sum = (int *)malloc(sizeof(int));
*sum = 0;
root_max(root, sum);
return *sum-1;
}