【问题】注意任意两个节点,不是只叶子到叶子,或者是跟到叶子。特殊考虑节点值为负数的情况。
【code】
在leetcode上的第一道题,bug了三次才通过。
函数maxNode返回节点的最大值,作为sum的初始值。
函数maxHandSum返回讲当前节点当做根节点,得到的最大和,特别注意最后一个if语句,对具有负贡献的子树进行剪枝。
有以下几点要注意的:
1、单独一个节点的树-3,没过,因为开始我只简单的将sum初始化为0,最大的sum输出也为0了
2、9 6 -3 # # -6 2 # # 2 # # -6 -6 -6,没过,应为没有剪枝
我的垃圾代码:
int maxNode(TreeNode *root, int &sum) {
if (root == NULL)
return 0;
if (r