算法-二叉树的最大路径和
为了找到二叉树的最大路径和,我们需要考虑所有可能的路径,包括不经过根节点的路径,所以其实如果你从整体上来一条路径一条路径的遍历,太复杂,我们可以换个思路,从每个节点出发,就把那个节点当成根节点,考虑以这个节点为根的最大路径和。这个路径可能只包含左子树或者右子树,或者左右子树都包含。
这里有个很重要的点,当考虑一个节点时,我们实际上只关心以它为根的子树中通过它的最大路径和,不需要知道这条路的完整细节,只需要知道这个最大值是多少。
所以我们用递归和回溯的思想来解决这道题:
-
定义一个辅助函数:该函数将返回以当前节点为根的子树中,通过当前节点的最大单边路径和(即只向左或只向右延伸的最大路径和)以及通过当前节点的最大路径和(可能包括左子树和右子树)。但是,对于全局的最大路径和,我们只需要考虑单边路径和,因为全局最大路径可能不经过根节点。
-
递归逻辑:
- 递归地计算左子树和右子树的最大单边路径和。
- 如果左子树或右子树的最大单边路径和为负,我们可以选择不将其包括在路径中(因为加入负值会降低路径和)。
- 计算通过当前节点的最大路径和(如果左右子树的最大单边路径和都非负,则包括它们;否则,只包括非负的那一边)。
- 更新全局最大路径和(只考虑单边路径和)。
-
回溯:在递归返回之前,需要撤销对当前节点状态的影响,因为我们需要从多个不同的路径来考虑问题。
-
初始化:全局最大路径和初始化为最小整数值(例如,
Integer.MIN_VALUE
),因为路径和至少为负数(只有一个负节点时)。但在实际应用中,由于题目说明节点值为0到9,我们可以初始化为比任何可能的单个节点值都小的数,如-1(如果确信树不为空)。 -
返回:返回全局最大路径和
代码如下:
import javax.swing.tree.TreeNode;public class maxPathSum {// 二叉树中最大路径和// 二叉树的路径被定义为一条节点序列,同一个节点在一条路径序列中至多出现一次 该路径至少包含一个节点,且不一定经过根节点// 返回其最大路径和 注意节点值可能是负数class Solution{private int maxSum=Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {maxGain(root);return maxSum;}private int maxGain(TreeNode node){if(node==null){return 0;}// 递归获得左右子树的单边路径和int leftGain=Math.max(maxGain(node.left),0);int rightGain=Math.max(maxGain(node.right),0);// 通过当前节点的最大路径和(可能是左+根+右,但只计算单边为正的情况)int priceNewPath=node.val+leftGain+rightGain;// 更新全局最大路径和maxSum=Math.max(maxSum,priceNewPath);// 返回以当前节点为根的最大单边路径和return node.val+Math.max(leftGain,rightGain);}}// 注意maxGain返回的是以当前节点为根的子树中,通过当前节点的最大单边路径和,但这对于找到全局最大路径和是足够的// 我们不需要知道全局最大路径的确切路径,只需要知道它的和是多少。}
相关文章:

算法-二叉树的最大路径和
为了找到二叉树的最大路径和,我们需要考虑所有可能的路径,包括不经过根节点的路径,所以其实如果你从整体上来一条路径一条路径的遍历,太复杂,我们可以换个思路,从每个节点出发,就把那个节点当成…...
解决url含%导致404错误
String imageUrl;// 使用WebClient下载图片WebClient webClient WebClientUtil.getWebClient();Mono<ByteArrayOutputStream> byteArrayOutputStreamMono webClient.get().uri(imageUrl).retrieve().bodyToFlux(DataBuffer.class) // 获取图片内容的DataBuffer流.reduc…...
[Linux Codec驱动]音频路由概念
1. 音频路由的基本概念 源(Source):音频信号的发出方,通常是一个音频输入设备,如麦克风、音频播放设备等。接收端(Sink):音频信号的接收方,通常是音频输出设备ÿ…...

母线槽温度监测的哪个部位?安科瑞母线槽测温解决方案-安科瑞黄安南
安科瑞生产厂家:黄安南 壹捌柒/陆壹伍/零陆贰叁柒 母线槽简单来说充当着电缆的角色只不过它是大电流的输送设备,一般是铜排或者绿排做导体,用非烯性绝缘材料做支撑,搭配金属外壳。相对于电缆来说母线槽的载流能力强、电能损耗低、…...
《深度学习》—— 模型的部署
文章目录 一、部署方式二、部署步骤三、注意事项 深度学习中模型的部署是将训练好的模型应用到实际场景中的过程,以下是对深度学习模型部署的详细解析: 一、部署方式 嵌入式设备部署:将深度学习模型部署到嵌入式设备中,如智能手机…...

多IP访问浏览器
添加多个ip地址 nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.61.100/24 ipv4.addresses 192.168.61.200/24 ipv4.addresses 192.168.61.128 ipv4.gateway 192.168.61.2 ipv4.dns 114.114.114.114...

1024程序员节福利放送 | AI 照片修复魔法,一键重拾旧时记忆
程序员充电礼包 今天是 1024 程序员节,小贝特意为大家准备了重磅福利!新用户使用邀请码「1024」注册 http://OpenBayes.com,即可获得 20 小时单卡 A6000 的免费使用时长,价值 80 元,资源 1 个月有效。仅限今日…...

OSPF特殊区域及其他特性
不用的链路这状态信息没必要一直保存,要不路由器承受不了。用OSPF 特殊区域解决 1. Stub区域和Totally Stub区域 R1作为ASBR引入多个外部网段,如果Area 2是普通区域,则R3将向该区域注入5类和4类LSA。 当把Area 2配置为Stub区域后:…...

动态量化:大模型在端侧CPU快速推理方案
作为一款高性能的推理引擎框架,MNN高度关注Transformer模型在移动端的部署并持续探索优化大模型在端侧的推理方案。本文介绍权重量化的模型在MNN CPU后端的推理方案:动态量化。动态量化指在运行时对浮点型feature map数据进行8bit量化,然后与…...

什么是零拷贝以及其应用场景是什么?
写在前面 本文看下什么是零拷贝,以及其具体的应用场景有哪些。 1:什么是零拷贝 想要解释清楚什么是零拷贝,需要先来看下常规的阻塞io一次io的过程,这里以从文件读取内容然后写到socket为例来看下,如下: …...
开源(open source)是什么?为什么要开源?
为什么开源这个问题挺复杂,这里就从社会面以及个人两个角度来说。当然个人层面的开源其实是建立在社会面形成开源氛围后开始的。 社会面开源 这里举一个例子,既互联网从 web1.0 到 web3.0 (开源 → 闭源 → 再开源)的历程&#…...

基于Spring Boot的论坛网站:从零到部署
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

vue开发的一个小插件vue.js devtools
可打开谷歌商城的情况下,不可打开的可以到极简插件里面去下载 极简插件官网_Chrome插件下载_Chrome浏览器应用商店 搜索vue即可...

GraphLLM:基于图的框架,通过大型语言模型处理数据
GraphLLM是一个创新的框架,它允许用户通过一个或多个大型语言模型(LLM)来处理数据。这个框架不仅提供了一个强大的代理,能够执行网络搜索和运行Python代码,还提供了一套工具来抓取网页数据,并将其重新格式化…...

HarmonyOS 5.0应用开发——Navigation实现页面路由
【高心星出品】 Navigation实现页面路由 Navigation:路由导航的根视图容器,一般作为页面(Entry)的根容器去使用,包括单页面(stack)、分栏(split)和自适应(a…...

物联网行业应用实训室建设方案
一、建设背景 随着物联网技术的迅猛发展和广泛应用,物联网产业已跃升为新时代的经济增长引擎,对于产业升级和社会信息化水平的提升具有举足轻重的地位。因此,为了满足这一领域的迫切需求,培养具备物联网技术应用能力的优秀人才成…...
SOLIDWORKS 2025更灵活零件建模
SOLIDWORKS 2025更灵活零件建模 北京众联亿诚是达索官方授权的SOLIDWORKS经销商,专业经销SOLIDWORKS正版软件并提供免费试用、培训认证、二次开发等增值服务。 在工程设计领域,SOLIDWORKS作为一款功能强大的三维CAD软件,一直以其优越的性能…...

智能巡检机器人的大模型训练
随着工业自动化和智能化进程的不断加快,智能巡检机器人已成为维护和管理复杂设备的重要工具。在电力、石油化工、煤矿、数据中心等行业中,智能巡检机器人通过自主巡检、故障检测等功能,提高了设备管理的效率和安全性。大模型训练在智能巡检机…...

RabbitMQ系列学习笔记(九)--路由模式
文章目录 一、路由模式原理二、多重绑定三、路由模式实战1、消费者代码2、生产者代码3、运行结果分析 本文参考 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、路由模式原理 使用发布订阅模式时&#x…...
[OS] pthreads-1
线程的基本概念 线程是进程中的一个单一的执行流。一个进程可以包含多个线程,这些线程共享进程中的资源,并且在相同的地址空间中执行。多线程是提高应用程序并行性的流行方法。例如,在浏览器中,不同的标签页可以视作独立的线程。…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...