leetcode 题目124
已经给代码补完注释啦
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
//三个数中返回最大值
int max (int x, int y,int z){
if (x<=z && y<=z){
return z;
}
if (x<=y && z<=y){
return y;
}
else{
return x;
}
}
//maxSum是最终的最小公共祖先
int maxSum;
//upSum是子节点能往上面返回的最大路径和,
//就是在看要是从我这个节点往上走的话,是从我的左子节点还是右子节点往上走会路径和更大,或者是别从我这儿走路径和会更大
int upSum(struct TreeNode* root){
//遍历到最底下或者接下来没有子节点的时候返回0
if (root == NULL){
return 0;
}
//开始遍历
int val_left = upSum(root->left);
int val_right = upSum(root->right);
//intraSum是在算以现在的节点做最高节点的话,我的左下加我加我的右下的路径和
int intraSum = val_left+val_right+(root->val);
//up是upSum的返回值,我这个节点能往上返回的最大路径和,是三种情况的比较: