news 2026/5/6 16:05:53

力扣刷题:二叉树中的最大路径和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣刷题:二叉树中的最大路径和

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

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

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

示例 1:

输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

示例 2:

输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

解析:
这道题使用递归来解题,重点是递归逻辑的设计以及返回值:
在当前节点(需要拐弯的那个节点)的路径和 = 左子树的最长路径和 + 右子树的最长路径和 + 当前节点的值
返回给父节点的是:
以当前节点为根节点的子树的最长路径和 + 当前节点的值
注意:
如果子树的和是负数,我们宁愿不选择这个子树,比如一个节点值是-10,左子树贡献-5,右子树贡献-3,最好的选择是都不要,返回0

具体代码:

/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//** * @param {TreeNode} root * @return {number} */varmaxPathSum=function(root){// 全局变量,用于记录整个树中的最大路径和// 初始化为负无穷,确保第一次比较时能被任何节点值更新letans=-Infinity/** * 深度优先搜索函数,递归计算每个节点的贡献值 * @param {TreeNode} node - 当前处理的节点 * @return {number} - 返回当前节点能向上贡献的最大路径和 */functiondfs(node){// 递归终止条件:空节点贡献值为0if(node===null){return0}// 递归计算左子树的最大贡献值// left表示:以node.left为起点的最大单向路径和constleft=dfs(node.left)// 递归计算右子树的最大贡献值// right表示:以node.right为起点的最大单向路径和constright=dfs(node.right)// 关键更新:以当前node为根节点的最大路径和// 这种情况考虑以node作为"转折点"的完整路径:// 可以包含左子树 + 当前节点 + 右子树// 这种情况不能向上传递给父节点,所以只用于更新全局答案ans=Math.max(ans,left+right+node.val)// 关键返回:当前节点能向上贡献的最大路径和// 这个返回值会被父节点使用,所以只能选择一边:// 1. Math.max(left, right) + node.val:选择左或右子树中更大的那个,加上当前节点// 2. 与0比较:如果贡献值是负数,就不选择这个子树(贡献0)// 这个返回值表示:从当前节点向上的单边最大路径和returnMath.max(Math.max(left,right)+node.val,0)}// 从根节点开始深度优先搜索dfs(root)// 返回整个树中的最大路径和returnans}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 11:21:14

谷歌镜像站点列表:提升外文资料查阅效率的辅助工具

lora-scripts:让 LoRA 微调像搭积木一样简单 在 AI 模型日益庞大的今天,动辄数十 GB 的大模型虽然能力惊人,但对普通人来说却像一座难以翻越的高山。你有没有遇到过这种情况:手头有一批风格独特的图片,想训练一个专属的…

作者头像 李华
网站建设 2026/5/5 15:47:56

Linux服务器安装lora-scripts全流程:Ubuntu系统适配指南

Linux服务器安装lora-scripts全流程:Ubuntu系统适配指南 在生成式AI迅速渗透各行各业的今天,如何以较低成本定制专属模型,成为开发者和企业关注的核心问题。尤其是对于资源有限的个人开发者或中小企业而言,全参数微调动辄需要数张…

作者头像 李华
网站建设 2026/5/1 7:16:02

Keil5安装配置完整指南:从零开始搭建嵌入式开发环境

从零搭建Keil5开发环境:嵌入式工程师的实战入门指南 你有没有遇到过这样的情况?刚拿到一块STM32开发板,满心欢喜地打开电脑准备“点灯”,结果卡在第一步——编译器装不上、头文件找不到、下载失败……明明代码写得没问题&#xf…

作者头像 李华
网站建设 2026/5/1 5:52:09

蔚来ET7车载屏幕:lora-scripts适配个性化壁纸

蔚来ET7车载屏幕:lora-scripts适配个性化壁纸 在高端智能电动车的座舱设计中,视觉体验早已超越“能看导航”这一基础功能。以蔚来ET7为例,其搭载的12.8英寸AMOLED中控屏与全液晶仪表构成沉浸式交互界面,用户不再满足于千篇一律的出…

作者头像 李华
网站建设 2026/5/3 3:59:28

相平面法解析:“质心侧偏角与质心侧偏角速度”状态分析图,参数自主调节,直观易懂,基于速度和车轮...

相平面法 “质心侧偏角-质心侧偏角速度” 可自主调节参数根据不同的速度和车轮转角以及前后轮的滑移率等变量生成相平面图,更加有利于状态分析 包含m文件以及资料,非常详细,通俗易懂一、代码整体定位与应用场景 本套代码基于MATLAB开发&#…

作者头像 李华
网站建设 2026/5/2 16:29:14

高可靠性USB通信模块设计:工业控制专用方案

高可靠性USB通信模块设计:工业控制专用方案在现代工业自动化现场,一个看似简单的USB接口,往往承载着远超消费电子场景的严苛使命。它不仅是设备配置、数据导出和固件升级的“生命线”,更是连接工程师与庞大控制系统之间的关键桥梁…

作者头像 李华