LeetCode--Binary Tree Maximum Path Sum
2014-09-07 18:55
260 查看
递归,dfs
这里返回值是一个pair<int,int>,first表示两个子树的不经过当前root的最大pathsum;second表示两个子树的,以root->left和root->right为路径起始节点的路径的最大值
这里返回值是一个pair<int,int>,first表示两个子树的不经过当前root的最大pathsum;second表示两个子树的,以root->left和root->right为路径起始节点的路径的最大值
/** * 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) { pair<int,int> res = dfs(root); return res.first; } pair<int,int> dfs(TreeNode *root) { if(root == NULL) { return make_pair(0,0); } pair<int,int> left = dfs(root->left); pair<int,int> right = dfs(root->right); int leftCrossMax = left.first; int rightCrossMax = right.first; int leftMax = left.second > 0?left.second:0; int rightMax = right.second > 0?right.second:0; int maxNoCross = INT_MIN; if(root->left != NULL) { maxNoCross = max(maxNoCross,leftCrossMax); } if(root->right != NULL) { maxNoCross = max(maxNoCross,rightCrossMax); } int maxCross = leftMax+rightMax+root->val; int maxSum = max(maxCross,maxNoCross); int child = max(leftMax,rightMax); int maxChild = child > 0?child+root->val:root->val; return make_pair(maxSum,maxChild); } };
相关文章推荐
- LeetCode: Binary Tree Maximum Path Sum 解题报告
- leetcode-124:Binary Tree Maximum Path Sum(Java)
- [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 124 —— 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
- Binary Tree Maximum Path Sum (二叉树路径和的最大值) 【leetcode】
- leetcode — binary-tree-maximum-path-sum
- Binary Tree Maximum Path Sum leetcode java
- LeetCode-Binary Tree Maximum Path Sum