写一个helper计算从这个点向下能到达的最大sum 然后每次更新全局最大sum 记得每次left 和 right 是要和0比较 因为可以不向下走 最下也是0
public class Solution {
int max = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
maxDown ( root );
return max;
}
public int maxDown ( TreeNode node ){
if ( node == null )
return 0;
int left = Math.max( 0, maxDown ( node.left ) );
int right = Math.max ( 0, maxDown ( node.right ));
max = Math.max ( max, left + right + node.val );
return Math.max (left, right) + node.val;
}
}