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

【leetcode】124 二叉树中的最大路径和(二叉树,递归) 题目链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 题目描述 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出... 阅读详情

题目

给定一个非空二叉树,返回其最大路径和。

本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
在这里插入图片描述
在这里插入图片描述

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

递归解法最简单,其实这道题本质上是一道类似 后序遍历 的题目。

注意路径的特点:同一条路径上的结点不能被遍历两次。

这就意味着:

  1. 如果当前结点是路径中的根节点,那么将左右两边路径和大于 0 的路径全部留下。
  2. 如果当前结点不是路径中的根节点,那就只能在左右两边路径和大于 0 的路径中选择一条或一个也不选 (两边都小于0)

非递归解法跟二叉树的后序遍历的递归写法相似,这里不再赘述。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    int res = Integer.MIN_VALUE;
    public int maxPathSum(TreeNode root) {
        helper(root);
        return res;
    }
    
    private int helper(TreeNode node) {
        if(node == null) return 0;
        int left = Math.max(helper(node.left), 0);
        int right = Math.max(helper(node.right), 0);
        res = Math.max(res, left + right + node.val); 
        return Math.max(left, right) + node.val;
    }
}
结果

在这里插入图片描述

【困难】力扣算法题解析LeetCode124:二叉树中的最大路径和 题目要求计算二叉树中的最大路径和,路径定义为节点序列,节点至多出现一次。通过深度优先搜索(DFS)和动态规划思想解决: 递归遍历:计算左右子树的贡献值(若为负则舍弃)。 更新最大值:当前节点作为路径转折点时的和(节点值 + 左贡献 + 右贡献)。 返回单边最大和:供父节点拼接路径。 时间复杂度O(N),空间复杂度O(N)(递归栈)。 代码实现:维护全局变量maxSum,递归函数返回单边路径和,动态更新最大值。 阅读详情

相关推荐

USB 3.0 高清音视频采集芯片——MS2130

MS2130 是一款 USB 3.0 高清视频和音频采集芯片,内部集成 USB3.0 Device 控制器、数据收发模块、音视频处理模块。

YOU_SeMi的博客 7858

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

124. 二叉树中的最大路径和 难度困难1155收藏分享切换为英文接收动态反馈 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1,2,3] 输出:6 解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6 示例 2

张小猪的家 1561

ChatIE:基于ChatGPT的零样本信息抽取实战指南

信息抽取是自然语言处理中的核心任务,旨在从非结构化文本中自动识别并结构化关键信息,如实体、关系及事件。传统方法依赖大量标注数据训练专用模型,流程复杂且成本高昂。随着大语言模型的发展,通过提示工程引导模型理解任务,实现了无需训练数据的零样本抽取能力,极大降低了技术门槛与应用成本。这种范式将信息抽取重构为多轮对话问题,通过分阶段提问引导模型逐步输出结构化结果,在快速原型验证、领域适配及小规模数据探索中展现出显著技术价值。本文以ChatIE项目为例,深入解析如何利用ChatGPT API,通过精心设计的提示词与两

weixin_30540691的博客 403

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

Leetcode.124: 二叉树中的最大路径和题目描述解题过程代码展示 题目描述 路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中至多出现以此,该路径至少包含一个节点,且不一定经过根节点。 路径和是路径中各节点值得总和。 给你一个二叉树的根结点root,返回其最大路径和。 示例1: 输入:root = [1, 2, 3] 输出:6 解释:最优路径是2->1->3,路径和为2+1+3=6 示例2 输入:root = [-10,9,20

小哲的博客 3097

Linux运维人,该醒醒了,2019年要变天了

外界都说运维只是处于被动低效率手工救火的状态,企业对其重视程度不高,提起运维很多人能联想到的字眼就有“苦逼”、“辛苦”、“加班”、“背锅”。在大数据、人工智能、容器技术的强力加持下,运维这个传统的技术工种已经从“机械劳动”这样的刻板印象中蜕变出来,成为了任何一家技术公司所必须依赖和大力投入的核心技术能力。 现在,运维人员的发展前景也开始让很多程序员眼羡,作为Linux运维人员的你:这一年,你的L...

qq_43083284的博客 1万+

5个实战必备的多模态情感分析数据集(附下载链接与避坑指南)

本文精选了5个实战必备的多模态情感分析数据集,包括CMU-MOSEI、CH-SIMS、UR-FUNNY、MUStARD和IEMOCAP,并提供了详细的下载链接与避坑指南。文章重点介绍了如何高效获取、预处理这些数据集,并自然整合了多模态情感分析的核心热词,旨在帮助研究者和开发者快速启动项目,规避常见陷阱,聚焦模型创新。

yolo5detector的博客 280

轻松解决三种二叉树的最大路径和问题

一、概数 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是...

kupePoem的专栏 3421

Comsol固体力学仿真﹣﹣受均匀内压的厚壁球壳弹塑性分析(加载卸载全流程)

COMSOL固体力学及结构力学仿真较少,故而查询了有关资料,才建立了如下模型。图4 加载卸载全历程中的冯米塞斯应力变化。该有限元模型是通过扫掠而得的结构化网格。图2 加载卸载全历程中的塑型区域变化。图3 加载卸载全历程中的位移应力变化。图6 关键节点第一,第三主应力分布。图5 关键节点应力场与塑性区分布。《弹塑性力学》大作业,记录一下。图1 球体的有限元网格模型。

weixin_62236383的博客 1484

二叉树中的最大路径和

至多出现一次。

qq_65628371的博客 1816

华为OD机试真题 新系统【Skill执行链完整性检测】

华为OD机试 新系统真题【Skill执行链完整性检测】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【Skill执行链完整性检测】

qq_45776114的博客 763

超十万字解读Spring AI实战:开篇

大模型技术正以惊人的速度改变世界,2025年的人工智能已不再是科幻,而是现实。大模型如ChatGPT等,正在重塑各行各业,降低技术门槛,使专业能力普及化。SpringAI的出现为Java开发者提供了桥梁,使其能在企业级系统中稳定运行AI,同时保持工程化思维。尽管SpringAI在生态、学习成本和性能上存在不足,但其企业级基因和国产化适配能力使其成为Java开发者的重要工具。本系列文章旨在介绍SpringAI的功能与特性,鼓励更多Java开发者参与AI实践,共同探索AI时代的无限可能。

liaokailin的专栏 1575

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

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。思路,可以通过一个函数,求以 root 为 根节点到 子节点的最大 pathSum, 这样递归遍历就能求出所有的 pathSum。解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。输入:root = [-10,9,20,null,null,15,7]输入:root = [1,2,3]

gq的博客 709

DeerFlow 系列教程 附录 | 核心文件索引、官方文档索引与推荐阅读顺序

DeerFlow 系列教程 附录本附录汇集了 DeerFlow 项目的核心文件索引、官方文档索引和推荐阅读顺序三份速查资料,方便读者在日常开发和学习中快速定位关键代码与文档。内容按实际项目目录结构整理,所有路径均基于 DeerFlow 2.0 版本验证。

weixin_43674738的博客 327

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

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点root,返回其 最大路径和。

qq_40263592的博客 2035

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

题目描述(困难难度) 考虑一条路径,可以从任意节点开始,每个节点最多经过一次,问经过的节点的和最大是多少。 解法一 递归 参考了 这里。 首先看到二叉树的题,肯定就是想递归了。递归常规的思路,肯定是递归考虑左子树的最大值,递归考虑右子树的最大值。 public int maxPathSum(TreeNode root) { if (root == null) { retu...

wind_liang的博客 1125

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

力扣LeetCode #124 二叉树中的最大路径和(maxPathSum)

- 题目描述 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。 提示: 树中节点数目范围是 [1, 3 * 104] -1000 <= Node.val <= 1000 来源:LeetCode - 示例 示例 1: 输入:root = [1,2,3] 输出:6 解释:最优路径是

weixin_49155948的博客 304

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

每日一题:Leetcode-124 二叉树中的最大路径和

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 1032

力扣第124题 二叉树中的最大路径和

记录一下刷题历程 力扣第124题 二叉树中的最大路径和。

buaichifanqie的博客 927

124. 二叉树中的最大路径和【 力扣(LeetCode) 】

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

yyh520025的博客 761

golang力扣leetcode 124. 二叉树中的最大路径和

124. 二叉树中的最大路径和124. 二叉树中的最大路径和题解代码 124. 二叉树中的最大路径和 124. 二叉树中的最大路径和 题解 思路,递归,大问题分解成小问题 代码 package main import "math" type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func maxPathSum(root *TreeNode) int { maxSum := math.MinInt32 var

清风 613

leetcode124二叉树的最大路径和

leetcode124 二叉树的最大路径和 题目详情 Java代码 public class Solution { private static int max = Integer.MIN_VALUE; public int maxPathSum(TreeNode root){ helper(root); return max; } ...

suyongcai1234的博客 176

leetcode 124 二叉树中的最大路径和 C语言

题目 leetcode 124 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 代码 int maxPathSum__(struct TreeNode *root, int *max) { if (root == NULL) return 0; int l = maxPathSu...

qq_42007287的博客 1051

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

LeetCode 链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 本题可以对比左神算法中的:二叉树中的最远距离,只不过最远距离中没有考虑权重的问题,本题需要考虑每个节点的权重问题,还是有所区别的。 题目:给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该...

Java学习 1402

leetcode hot100【LeetCode 124.二叉树中的最大路径和】java实现

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

DataCrafter的博客 1512

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

LeetCode 124:二叉树中的最大路径和题目描述解题思路代码实现总结 题目描述 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 解题思路 通过递归求当前节点为根节点的左右子树路径和(路径和=当前节点权值+左子树节点权值+右子树节点权值),和现有最大路径和比较,并更新。当递归结束,返回上一...

香农三定律的博客 199

LeetCode 124. 二叉树中的最大路径和:刷题解析

本文解析LeetCode 124题"二叉树中的最大路径和",重点解决路径类问题的难点。首先明确路径定义:节点序列需相邻连接且不重复,路径不一定经过根节点。解题采用DFS方法,区分"顶点路径和"(可向左右延伸,更新全局最大值)和"贡献路径和"(仅单侧延伸,供父节点使用)。代码实现中需注意:初始maxSum设为负无穷以处理全负数节点情况,递归时舍弃负贡献值。通过mermaid图解辅助理解两类路径和的区别,帮助避免常见错误。

2401_86788218的博客 1062
上一篇: Leetcode 117. 填充每个节点的下一个右侧节点指针 II
下一篇: Leetcode 129. 求根到叶子节点数字之和
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值