Binary Tree Maximum Path Sum----leetcode
2014-05-05 15:41
344 查看
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,
Return
题目大意:寻找二叉树中的最大路径和,路径的起点和终点可以是树中的任意节点。可以采用递归的方式遍历树中的路径,但是有个问题需要注意,递归的返回值只是局部的最优值,并不能作为全局的值进行计算,递归的原则是左子树的值加上右子树的值加上根节点的值,与全局max进行比较,如大于则更新,递归的返回值则为max(root.val,root.val+left,root.val+right),代码如下:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private int max=Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
if(root==null)
return 0;
maxSum(root);
return max;
}
public int maxSum(TreeNode root)
{
if(root==null)
return 0;
int value=root.val;
int left,right;
left=maxSum(root.left);
right=maxSum(root.right);
if(left>0)
value+=left;
if(right>0)
value+=right;
max=Math.max(max,value);
return Math.max(root.val,Math.max(left+root.val,right+root.val));
}
}
The path may start and end at any node in the tree.
For example:
Given the below binary tree,
1 / \ 2 3
Return
6.
题目大意:寻找二叉树中的最大路径和,路径的起点和终点可以是树中的任意节点。可以采用递归的方式遍历树中的路径,但是有个问题需要注意,递归的返回值只是局部的最优值,并不能作为全局的值进行计算,递归的原则是左子树的值加上右子树的值加上根节点的值,与全局max进行比较,如大于则更新,递归的返回值则为max(root.val,root.val+left,root.val+right),代码如下:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private int max=Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
if(root==null)
return 0;
maxSum(root);
return max;
}
public int maxSum(TreeNode root)
{
if(root==null)
return 0;
int value=root.val;
int left,right;
left=maxSum(root.left);
right=maxSum(root.right);
if(left>0)
value+=left;
if(right>0)
value+=right;
max=Math.max(max,value);
return Math.max(root.val,Math.max(left+root.val,right+root.val));
}
}
相关文章推荐
- 【leetcode】Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum (二叉树路径和的最大值) 【leetcode】
- LeetCode刷题 | Binary Tree Maximum Path Sum
- [Leetcode][JAVA] Binary Tree Maximum Path Sum
- LeetCode-Binary Tree Maximum Path Sum
- 8.10 [LeetCode] 173 Binary Tree Maximum Path Sum
- leetcode之Binary Tree Maximum Path Sum
- BinaryTreeMaximumPathSum(leetcode)
- [leetcode]Binary Tree Maximum Path Sum
- leetcode之Binary Tree Maximum Path Sum
- LeetCode: Binary Tree Maximum Path Sum
- [LeetCode]题解(python):124-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
- LeetCode124 Binary Tree Maximum Path Sum
- leetcode 日经贴,Cpp code -Binary Tree Maximum Path Sum
- Leetcode 124 Binary Tree Maximum Path Sum