-
2.12
- 不需要currentSum,因为 maxL 是全局更新的,左右长度每次都选最大值(非负数)
-
1.30
- 先算左右子树分别的最大长度(注意不能为负)
- 尝试更新最大值(左右+跟一块加)
- 返回根节点的值+左右其中一根最长的路径和
class Solution {
int ans = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
sum(root);
return ans;
}
public int sum(TreeNode root){
if(root==null) return 0;
int leftLength = Math.max(sum(root.left),0);
int rigthLength = Math.max(sum(root.right),0);
int maxL = root.val+leftLength+rigthLength;
ans = Math.max(ans,maxL);
return root.val+Math.max(leftLength,rigthLength);
}
}