Binary Tree Maximum Path Sum [leetcode] dp
2014-10-09 18:52
351 查看
a(i):以节点i作为终点的单边最大路径和
b(i):以节点i作为终点的双边边最大路径和
a(i) = max{ i->val,
i->val + max{a(i->left), a(i->right) }};
b(i) = max{ i->val, i->val + max{a(i->left), a(i->right) } ,
i->val + a(i->left) + a(i->right)};
由于a(i), b(i)仅仅和a(i->left)和a(i->right) 有关,因此可以将空间压缩为O(1)
代码如下:
b(i):以节点i作为终点的双边边最大路径和
a(i) = max{ i->val,
i->val + max{a(i->left), a(i->right) }};
b(i) = max{ i->val, i->val + max{a(i->left), a(i->right) } ,
i->val + a(i->left) + a(i->right)};
由于a(i), b(i)仅仅和a(i->left)和a(i->right) 有关,因此可以将空间压缩为O(1)
代码如下:
int maxPathSum(TreeNode *root) { int res = INT_MIN; getSum(root, res); return res; } int getSum(TreeNode * root, int & res) { if (root == NULL) return 0; int l = getSum(root->left, res); int r = getSum(root->right, res); int a, b; a = max(root->val, root->val + max(l, r));//one side b = max(a, root->val + l + r); //both side res = max(res, max(a, b)); return a; }
相关文章推荐
- Binary Tree Maximum Path Sum [leetcode] dp
- [LeetCode] Binary Tree Maximum Path Sum
- leetcode4: Binary Tree Maximum Path Sum
- [leetcode刷题系列]Binary Tree Maximum Path Sum
- [Leetcode]Binary Tree Maximum Path Sum
- Leetcode Maximum SubArray & Binary Tree Maximum Path Sum
- LeetCode_Binary Tree Maximum Path Sum
- [leetcode]Binary Tree Maximum Path Sum
- [LeetCode] Binary Tree Maximum Path Sum
- LeetCode-Binary Tree Maximum Path Sum
- [Leetcode] Binary Tree Maximum Path Sum
- LeetCode Binary Tree Maximum Path Sum
- Leetcode::Binary Tree Maximum Path Sum
- leetcode Binary Tree Maximum Path Sum
- LeetCode Binary Tree Maximum Path Sum
- [leetcode]Binary Tree Maximum Path Sum
- leetcode: Binary Tree Maximum Path Sum
- Leetcode: Binary Tree Maximum Path Sum
- [leetcode]Binary Tree Maximum Path Sum
- LeetCode——Binary Tree Maximum Path Sum