https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/
就是递归,向上逐渐的累加值。我们不需要知道具体的路径是什么样子的,只需要知道当前节点能取得最大值。
这道题有两个值最重要:一个全局得记录值,一个局部的最大值。
public class test {
int maxRes = Integer.MIN_VALUE;
public int maxPathSum(TreeNode node){
postOrder(node);
return maxRes;
}
private int postOrder(TreeNode root){
if(root == null){
return 0;
}
int left = Math.max(postOrder(root.left),0);
int right = Math.max(postOrder(root.right),0);
maxRes = Math.max(maxRes, root.val + left + right);
return root.val + Math.max(left, right);
}
}