124. 二叉树中的最大路径和 --力扣 --JAVA

简介: 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。

 题目

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和

解题思路

    1. 对树进行递归;
    2. 左右子树加上当前节点与当前结果相比取最大值(从下往上归);
    3. 向上返回只能保留左右子树中的一个,否则会无法形成一条链。

    代码展示

    class Solution {
        private int ans = Integer.MIN_VALUE;
        public int maxPathSum(TreeNode root) {
            dfs(root);
            return ans;
        }
        private int dfs(TreeNode root){
            if(root == null){
                return 0;
            }
            int left = dfs(root.left);
            int right = dfs(root.right);
            ans = Math.max(ans,left + right + root.val);
            return Math.max(Math.max(left,right) + root.val, 0);    //当前最大值
        }
    }

    image.gif


    目录
    相关文章
    |
    29天前
    |
    IDE Java 编译器
    Java:如何确定编译和运行时类路径是否一致
    类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
    |
    1月前
    【LeetCode 31】104.二叉树的最大深度
    【LeetCode 31】104.二叉树的最大深度
    19 2
    |
    1月前
    【LeetCode 29】226.反转二叉树
    【LeetCode 29】226.反转二叉树
    15 2
    |
    1月前
    【LeetCode 28】102.二叉树的层序遍历
    【LeetCode 28】102.二叉树的层序遍历
    15 2
    |
    21天前
    |
    算法 Java
    JAVA 二叉树面试题
    JAVA 二叉树面试题
    14 0
    |
    1月前
    【LeetCode 43】236.二叉树的最近公共祖先
    【LeetCode 43】236.二叉树的最近公共祖先
    18 0
    |
    1月前
    【LeetCode 38】617.合并二叉树
    【LeetCode 38】617.合并二叉树
    14 0
    |
    1月前
    【LeetCode 37】106.从中序与后序遍历构造二叉树
    【LeetCode 37】106.从中序与后序遍历构造二叉树
    16 0
    |
    1月前
    【LeetCode 34】257.二叉树的所有路径
    【LeetCode 34】257.二叉树的所有路径
    12 0
    |
    1月前
    【LeetCode 32】111.二叉树的最小深度
    【LeetCode 32】111.二叉树的最小深度
    16 0