您的位置:首页 > 其它

【DFS&二叉树】Binary Tree Maximum Path Sum

2014-04-03 21:09 253 查看
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

注意特殊情况:左右路径为负的情况,只能选择根节点的值
public class Solution {
private int max;

public int dfs(TreeNode p){
if(p == null) return 0;
int left = dfs(p.left);
int right = dfs(p.right);
int sum = p.val;

if(left > 0)
sum += left;
if(right > 0)
sum += right;

max = Math.max(sum , max);
return p.val + (Math.max(left, right)>0 ? Math.max(left, right) : 0);
}

public int maxPathSum(TreeNode root) {
max = Integer.MIN_VALUE;
dfs(root);
return max;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: