参考:https://blog.csdn.net/qq_28114615/article/details/86561069
牛客:nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a?tpId=188&&tqId=38646&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int MAX = Integer.MIN_VALUE;
public int calculate(TreeNode node){
if(node == null) return 0;
int left = 0;
int right = 0;
if(node.left!=null) left = calculate(node.left);
if(node.right!=null) right = calculate(node.right);
int sum = node.val;
if(left>0) sum += left;
if(right>0) sum += right;
MAX = Math.max(MAX, sum);
return Math.max(node.val, Math.max(left+node.val, right+node.val));
}
public int maxPathSum(TreeNode root) {
calculate(root);
return MAX;
}
}