给一棵二叉树,找出从根节点出发的路径中,和最大的一条。
这条路径可以在任何二叉树中的节点结束,但是必须包含至少一个点(也就是根了)。
样例
给出如下的二叉树:
1
/ \
2 3
返回4
。(最大的路径为1→3)
int maxSum=INT_MIN;
void process(TreeNode *root,int sum){
if(root == NULL) return;
sum += root->val;//往下经过 要加上该点的val
maxSum=max(maxSum,sum);
process(root->left,sum);
process(root->right,sum);
sum -= root->val;//往上回父节点 要减去该点的val
}
int maxPathSum2(TreeNode *root) {
if(root == NULL) return 0;
maxSum=root->val;
int sum=0;
process(root,sum);
return maxSum;
}