124. 二叉树中的最大路径和

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
从下向上回溯,由于是一条路径,所以返回的值不能是node+left+right;只能是node;node+left;node+right;
比较最大值时需要和node+left+right;就是我自己就是一条路径。不和上面拼接了。
int ret = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
dfs(root);
return ret;
}
public int dfs(TreeNode node) {
if(node == null) {
return 0;
}
int left = dfs(node.left);
int right = dfs(node.right);
int ret1 = Math.max(node.val+left,node.val+right);
int ret2 = Math.max(node.val, ret1);// 这里是返回的最大值。
// 做两次比较,1次是比较能返回的最大值;2次是比较自己成路径的最大值。
ret = Math.max(ret2,ret);
ret = Math.max(ret, node.val+left+right);
return ret2;
}
浙公网安备 33010602011771号