LeetCode(124) Binary Tree Maximum Path Sum 二叉树的最大路径和 (如何递归?)
2016-11-01 21:40
567 查看
转载 :http://blog.csdn.net/fly_yr/article/details/50412751
对任意一个节点,当前节点值cur,
左子树,一条路径值 > 0 , cur += left
右子树,一条路径值 > 0 , cur += right
这样可以可以遍历求得最大的路径和。
ac代码
注意递归思路
求二叉树中两个节点之间的最大距离。
(1)如果二叉树为空,返回0
(2)如果二叉树不为空,最大距离要么是左子树中的最大距离,要么是右子树中的最大距离,要么是左子树节点中到根节点的最大距离+右子树节点中到根节点的最大距离
思路同上,代码也同上,只不过要换成距离(也就是深度)
对任意一个节点,当前节点值cur,
左子树,一条路径值 > 0 , cur += left
右子树,一条路径值 > 0 , cur += right
这样可以可以遍历求得最大的路径和。
ac代码
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int INF = 0x7fffffff; int MIN_INF = -INF-1; int maxVal; int dfs(TreeNode* root) { if(root == NULL) return 0; else{ int leftM = dfs(root->left); int rightM = dfs(root->right); int rootVal = root->val; int cur = rootVal; if(leftM > 0) cur += leftM; if(rightM > 0) cur += rightM; if(cur > maxVal) maxVal = cur; return max(rootVal, max(rootVal+leftM, rootVal+rightM)); } } int maxPathSum(TreeNode* root) { if(root == NULL) return 0; maxVal = MIN_INF; dfs(root); return maxVal; } };
注意递归思路
求二叉树中两个节点之间的最大距离。
(1)如果二叉树为空,返回0
(2)如果二叉树不为空,最大距离要么是左子树中的最大距离,要么是右子树中的最大距离,要么是左子树节点中到根节点的最大距离+右子树节点中到根节点的最大距离
思路同上,代码也同上,只不过要换成距离(也就是深度)
相关文章推荐
- Leetcode 124 Binary Tree Maximum Path Sum 二叉树最大路径和
- [LeetCode 124] - 二叉树最大路径和(Binary Tree Maximum Path Sum)
- LeetCode-Binary Tree Maximum Path Sum-二叉树最大路径和-DFS
- LeetCode | Binary Tree Maximum Path Sum(二叉树的路径最大值)
- 【二叉树的递归】05二叉树中找任意起点和终点使他们的路径和最大【Binary Tree Maximum Path Sum】
- LeetCode(Binary Tree Maximum Path Sum) 在二叉树中找出一条和最大的路径
- 124 Binary Tree Maximum Path Sum 求二叉树的最大路径和
- [LeetCode] Binary Tree Maximum Path Sum 求二叉树的最大路径和
- Binary Tree Maximum Path Sum (二叉树路径和的最大值) 【leetcode】
- [Leetcode] Binary tree maximum path sum求二叉树最大路径和
- JavaShowAlgorithm-Binary Tree Maximum Path Sum 二叉树最大路径和
- [LeetCode 124] Binary Tree Maximum Path Sum (DFS/二叉树)
- 二叉树最大路径和-Binary Tree Maximum Path Sum
- [LeetCode] Binary Tree Maximum Path Sum(最大路径和)
- Binary Tree Maximum Path Sum 二叉树最大路径和 @LeetCode
- Binary Tree Maximum Path Sum 求二叉树的最大路径和
- [LeetCode] Binary Tree Maximum Path Sum(最大路径和)
- Binary Tree Maximum Path Sum 二叉树中任意路径的最大和
- lintcode binary-tree-maximum-path-sum 二叉树中的最大路径和
- 求二叉树最大路径和(Binary Tree Maximum Path Sum)