简介
理解题目很重要
注意,不能走进一个分支又掉头回来走另一个分支,路径会重叠,不符合定义。
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;
}
}