您的位置:首页 > 其它

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,
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