Given a non-empty binary tree, find the maximum path sum.
For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one nodeand does not need to go through the root.
Example 1:
Input: [1,2,3] 1 / \ 2 3 Output: 6
Example 2:
Input: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 Output: 42
该题意思为找出一条最大路径:其中改路劲可以从左节点某个位置到达右节点某个位置,其中不能分叉,该情况将其看成一个无向图,那么该题就是找出一个节点,计算出其节点左边的最大路径和右边的最大路径求结果值即可。
int max = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
if(root == null) {
return 0;
}
helper(root);
return max;
}
private int helper(TreeNode root){
if(root == null) {
return 0;
}else {
int left = Math.max(0, helper(root.left));
int right = Math.max(0,helper(root.right));
max = Math.max(max, root.val + left + right);
return Math.max(left+root.val, root.val+right);
}
}