您的位置:首页 > 其它

二叉树的最大路径和 II--要求开始于根节点--则 先加上根节点,再递归左右子树。

2016-05-03 21:48 507 查看
给一棵二叉树,找出从根节点出发的路径中,和最大的一条。
这条路径可以在任何二叉树中的节点结束,但是必须包含至少一个点(也就是根了)。

您在真实的面试中是否遇到过这个题? 

Yes

样例

给出如下的二叉树:
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: