题目描述:
解题思路:
找到从root向左走所能得到的最大和,再找到从root向右走所能得到的最大和,再遍历每个节点作为root计算max
代码实现:
class Solution {
int res = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
if (root == null) return 0;
dfs(root);
return res;
}
public int dfs(TreeNode root) {
if (root == null)
return 0;
int leftMax = Math.max(0, dfs(root.left));
int rightMax = Math.max(0, dfs(root.right));
res = Math.max(res, root.val + leftMax + rightMax);
return root.val + Math.max(leftMax, rightMax);
}
}