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

题目

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

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

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

解题思路

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

代码展示

java 复制代码
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);    //当前最大值
    }
}
相关推荐
橘颂TA6 小时前
【剑斩OFFER】算法的暴力美学——点名
数据结构·算法·leetcode·c/c++
迷途之人不知返7 小时前
数据结构之,栈与队列
数据结构
MATLAB代码顾问7 小时前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
高山上有一只小老虎9 小时前
字符串字符匹配
java·算法
愚润求学9 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划
MOONICK9 小时前
数据结构——哈希表
数据结构·哈希算法·散列表
林太白9 小时前
跟着TRAE SOLO学习两大搜索
前端·算法
ghie909010 小时前
图像去雾算法详解与MATLAB实现
开发语言·算法·matlab
云泽80810 小时前
从三路快排到内省排序:探索工业级排序算法的演进
算法·排序算法
weixin_4684668510 小时前
遗传算法求解TSP旅行商问题python代码实战
python·算法·算法优化·遗传算法·旅行商问题·智能优化·np问题