Binary Tree Maximum Path Sum
来源:互联网 发布:手机淘宝微淘怎么置顶 编辑:程序博客网 时间:2024/04/29 13:04
Given a binary tree, find the maximum path sum.
The path may start and end at any node in the tree.
For example:
Given the below binary tree,
1 / \ 2 3
Return 6
.
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int maxPathSum(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function int max = 1<<31; map<TreeNode *, int> sum_map; maxPath(root, sum_map, max); return max; } int maxPath(TreeNode * root, map<TreeNode *, int> &sum_map, int & max){ if(!root) { return 0; } if(!root->left && !root->right){ int sum = root->val; if(sum > max) max = sum; return root->val; } int left = maxSum(root->left, sum_map); int right = maxSum(root->right, sum_map); left = left > 0 ? left : 0; right = right > 0 ? right : 0; int sum = left + right + root->val; if(sum > max) max = sum; maxPath(root->left, sum_map, max); maxPath(root->right, sum_map, max); return max; } int maxSum(TreeNode* root, map<TreeNode *, int> &sum_map){ if(sum_map.find(root) != sum_map.end()){ return sum_map[root]; } int value = 0; if(!root) value = 0; else if(!root->left && !root->right) value = root->val; else { value = max(maxSum(root->left, sum_map), maxSum(root->right, sum_map)) + root->val; } sum_map[root] = value > 0 ? value :0 ; return sum_map[root]; }};
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- 博士这条船
- 2013.1.12
- VC如何查看全局变量的值
- 2012年12月国内居民消费鞋类价格上涨1.2%
- Js调用指定空间的点击事件
- Binary Tree Maximum Path Sum
- 2011-09-09 23:44 最新Android ADT, SDK, SDK_tool等官方下载说明(12.10.18更新)
- Qt中的乱码问题
- 我的assit设置
- VC/MFC 怎么将窗口置顶
- 关于C/C++的一些小点
- 基于platform机制的驱动模型
- 安卓模拟器安装
- 实现Qt和OpenGL混合渲染