LeetCode-Binary Tree Maximum Path Sum-二叉树最大路径和-DFS
2014-10-05 21:51
477 查看
https://oj.leetcode.com/problems/binary-tree-maximum-path-sum/
求二叉树的连续路径加和的最大值。
这道题会被坑的地方就是认为结点值都大于0。需要考虑结点值小于0的情况。
考虑包含结点u的所有路径的最大值。可以看出这个最大路径有三种可能:
1)只含u自己一个结点。root->val
2)包含u和一个儿子,但不含另一个儿子的结点的路径。
3)包含u,以及他的两个结点的路径。
这个儿子上的路径可以通过返回值递归得到:它为当前包含u和其中一个儿子最大路径的和,或者只有u自己。
然后这个树上的路径就是上面三种情况的最大值,对每个结点都求个最大就能得到。
求二叉树的连续路径加和的最大值。
这道题会被坑的地方就是认为结点值都大于0。需要考虑结点值小于0的情况。
考虑包含结点u的所有路径的最大值。可以看出这个最大路径有三种可能:
1)只含u自己一个结点。root->val
2)包含u和一个儿子,但不含另一个儿子的结点的路径。
3)包含u,以及他的两个结点的路径。
这个儿子上的路径可以通过返回值递归得到:它为当前包含u和其中一个儿子最大路径的和,或者只有u自己。
然后这个树上的路径就是上面三种情况的最大值,对每个结点都求个最大就能得到。
/** * 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 res; int DFS(TreeNode *root){ if (root==NULL){return 0;} int l=DFS(root->left); int r=DFS(root->right); res=max(res,root->val); res=max(res,l+r+root->val); res=max(res,l+root->val); res=max(res,r+root->val); int curRes=root->val; curRes=max(curRes,l+root->val); curRes=max(curRes,r+root->val); return curRes; } int maxPathSum(TreeNode *root) { res=numeric_limits<int>::min(); DFS(root); return res; } };
相关文章推荐
- [LeetCode] Binary Tree Maximum Path Sum 求二叉树的最大路径和
- Leetcode 124 Binary Tree Maximum Path Sum 二叉树最大路径和
- LeetCode(124) Binary Tree Maximum Path Sum 二叉树的最大路径和 (如何递归?)
- LeetCode(Binary Tree Maximum Path Sum) 在二叉树中找出一条和最大的路径
- Binary Tree Maximum Path Sum (二叉树路径和的最大值) 【leetcode】
- [LeetCode 124] - 二叉树最大路径和(Binary Tree Maximum Path Sum)
- LeetCode | Binary Tree Maximum Path Sum(二叉树的路径最大值)
- [Leetcode] Binary tree maximum path sum求二叉树最大路径和
- 求二叉树最大路径和(Binary Tree Maximum Path Sum)
- [LeetCode] Binary Tree Maximum Path Sum(最大路径和)
- Binary Tree Maximum Path Sum 求二叉树的最大路径和
- [LeetCode 124] Binary Tree Maximum Path Sum (DFS/二叉树)
- lintcode binary-tree-maximum-path-sum 二叉树中的最大路径和
- binary-tree-maximum-path-sum(二叉树的最大路径和)
- [LintCode] Binary Tree Maximum Path Sum (二叉树中的最大路径和)
- 【二叉树的递归】05二叉树中找任意起点和终点使他们的路径和最大【Binary Tree Maximum Path Sum】
- JavaShowAlgorithm-Binary Tree Maximum Path Sum 二叉树最大路径和
- 二叉树最大路径和-Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum 求二叉树的最大路径和
- LeetCode OJ:Binary Tree Maximum Path Sum(二叉树最大路径和)