您的位置:首页 > 其它

Leetcode#124 Binary Tree Maximum Path Sum

2015-01-21 12:00 357 查看
原题地址

假设我们找到了一个最优路径,那么该路径上一定存在一个节点,左边的路径是它的左儿子,右边的路径是它的右儿子。所以,只需要在遍历二叉树求路径的同时更新最大值即可。maxPath = max{只保留左边路径,只保留右边路径,同时保留左右两边路径,左右两边路径都不保留(只有节点本身)},对应第8行无数个max...

代码:

int maxPath;

int maxHalfPathSum(TreeNode *root) {
if (!root)
return 0;
int l = maxHalfPathSum(root->left);
int r = maxHalfPathSum(root->right);
maxPath = max(maxPath, max(max(max(l, r), l + r), 0) + root->val);
return max(max(l, r), 0) + root->val;
}

int maxPathSum(TreeNode *root) {
if (!root)
return 0;
maxPath = root->val;
maxHalfPathSum(root);
return maxPath;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: