1- 思路
- 使用递归 dfs 实现
- ① 递归思路:每次递归返回值为 ,
root.val+Math.max(left,right)
从 左右孩子中挑选一个大的。 - ② 递归公式:定义 sum,
sum = root.val + left + right
2- 实现
⭐124. 二叉树中的最大路径和——题解思路

class Solution {
int maxSum = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
dfs(root);
return maxSum;
}
public int dfs(TreeNode root){
if(root==null){
return 0;
}
int left = dfs(root.left);
int right = dfs(root.right);
int sum = root.val + left + right;
maxSum = Math.max(sum,maxSum);
int output = root.val + Math.max(left,right);
if(output>0) return output;
return 0;
}
}