美文网首页
LeetCode 第124题:二叉树中的最大路径和

LeetCode 第124题:二叉树中的最大路径和

作者: 放开那个BUG | 来源:发表于2021-04-11 19:40 被阅读0次

    1、前言

    题目描述

    2、思路

    此题的思路是:

    • 题目的描述为一棵二叉树,并且是选定任意一个节点开始求出最大路径。我们先不管路径线路是怎样,先将每个节点的路径抽象为:left + right + root,如果 left 或 right 有一个小于0,则将作为0代替,即不要这边的值。那么对某一个 root 来说,我先求它 left 的最大值,再求它 right 的最大值,然后全局最大值与他比较,找出最大的一个。但是返回上层的时候,只能取一边的路径,所以需要找出 max(left, right),再加上自身的。

    3、代码

    class Solution {
    
        private int res = Integer.MIN_VALUE;
    
        public int maxPathSum(TreeNode root) {
            oneSideMax(root);
            return res;
        }
    
        private int oneSideMax(TreeNode root){
            if(root == null){
                return 0;
            }
    
            int left = Math.max(0, oneSideMax(root.left));
            int right = Math.max(0, oneSideMax(root.right));
            res = Math.max(res, left + right + root.val);
            return Math.max(left, right) + root.val;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 第124题:二叉树中的最大路径和

          本文链接:https://www.haomeiwen.com/subject/ehnkwktx.html