简介
理解题目很重要
注意,不能走进一个分支又掉头回来走另一个分支,路径会重叠,不符合定义。
code
class Solution {
public int maxValue = Integer.MIN_VALUE;
public int maxPath(TreeNode root) {
if(root == null) return 0;
int leftValue = 0;
int rightValue = 0;
if(root.left != null) leftValue = Math.max(maxPath(root.left), 0);
if(root.right != null) rightValue = Math.max(maxPath(root.right), 0);
int pathValue = leftValue + rightValue + root.val;
if(maxValue < pathValue) maxValue = pathValue;
return root.val + Math.max(rightValue, leftValue); // 路径值 单边传递.
}
public int maxPathSum(TreeNode root){
maxPath(root);
return maxValue;
}
}
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》