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;

    }
posted @ 2022-02-24 15:02  一颗青菜  阅读(5)  评论(0)    收藏  举报