由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Binary Tree Maximum Path Sum
相关主题
讨论一道LeetCode题:Binary Tree Maximum Path Sum为啥有两个case不对??Binary Tree Maximum Path Sum
Leetcode bst max path-----is this solution correct?请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal
[leetcode] Maximum Depth of Binary Tree问个leetcode的题
发个题吧,自己想的Binary Tree Maximum Path Sum
这个Binary Tree的题来看看请问Binary Tree Maximum Path Sum这题到底是任意两个node的距离还是root到某点的距离?
若问:如何验证binary tree是否是binary search tree?弱问:leetcode里Convert Sorted List to Binary Search Tree
关于 leetcode上的balanced binary tree 的问题。check if a binary tree is a valid binary search tree
serialize n-ary tree 一问问一个leetcode上面binary tree的题目
相关话题的讨论汇总
话题: val话题: maxsofar话题: cur话题: maxleft话题: maxright
进入JobHunting版参与讨论
1 (共1页)
i******t
发帖数: 22541
1
这个题目中
假设当前 p
那么最大值可以 为
p->val
p->val + p->left->val
p->val + p->right->val
p->val + p->right->val+ p->left->val
这四种情况
但是为什么不能是单独的
p->left->val
或者
p->right->val
呢?
如果 p->val 本身是负数 ,左子树 最大值 是正 数 那么最大值不应该算上 p本身吧
》?
求解惑
thx
T*******e
发帖数: 4928
2
所以你会用一个变量存着p的子树的最大和值maxSoFar,然后比较p的子树的最大值
maxSoFar与那四个通过p的最大和值maxAcrossCurNode,来更新从下往上走到p为止的最
大值maxSoFar。
int maxPathSumHelper(TreeNode *cur, int &maxSoFar){
if(!cur) return 0;
int maxLeft=maxPathSumHelper(cur->left, maxSoFar);
int maxRight=maxPathSumHelper(cur->right, maxSoFar);
int maxAcrossCurNode=cur->val;
if(maxLeft>0) maxAcrossCurNode+=maxLeft;
if(maxRight>0) maxAcrossCurNode+=maxRight;
maxSoFar=max(maxAcrossCurNode, maxSoFar); //update maxSoFar !!!!
return max(cur->val, cur->val+ max(maxLeft, maxRight));
}
int maxPathSum(TreeNode *root){
if(!root) return INT_MIN;
int maxSoFar=root->val;
maxPathSumHelper(root, maxSoFar);
return maxSoFar;
}
l*******0
发帖数: 63
3
if(maxLeft>0) cur+=maxLeft;
if(maxRight>0) cur+=maxRight;
处的cur应改为maxAcrossCurNode?

【在 T*******e 的大作中提到】
: 所以你会用一个变量存着p的子树的最大和值maxSoFar,然后比较p的子树的最大值
: maxSoFar与那四个通过p的最大和值maxAcrossCurNode,来更新从下往上走到p为止的最
: 大值maxSoFar。
: int maxPathSumHelper(TreeNode *cur, int &maxSoFar){
: if(!cur) return 0;
: int maxLeft=maxPathSumHelper(cur->left, maxSoFar);
: int maxRight=maxPathSumHelper(cur->right, maxSoFar);
: int maxAcrossCurNode=cur->val;
: if(maxLeft>0) maxAcrossCurNode+=maxLeft;
: if(maxRight>0) maxAcrossCurNode+=maxRight;

T*******e
发帖数: 4928
4
yeah. typo. Thank you for pointing that out. Bug free is really difficult.

【在 l*******0 的大作中提到】
: if(maxLeft>0) cur+=maxLeft;
: if(maxRight>0) cur+=maxRight;
: 处的cur应改为maxAcrossCurNode?

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个leetcode上面binary tree的题目这个Binary Tree的题来看看
Binary Tree Maximum Path Sum非递归的怎么写若问:如何验证binary tree是否是binary search tree?
help: leetcode "Recover Binary Search Tree" -- 附代码关于 leetcode上的balanced binary tree 的问题。
Find the node with given value in binary tree in in-orderserialize n-ary tree 一问
讨论一道LeetCode题:Binary Tree Maximum Path Sum为啥有两个case不对??Binary Tree Maximum Path Sum
Leetcode bst max path-----is this solution correct?请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal
[leetcode] Maximum Depth of Binary Tree问个leetcode的题
发个题吧,自己想的Binary Tree Maximum Path Sum
相关话题的讨论汇总
话题: val话题: maxsofar话题: cur话题: maxleft话题: maxright