当前位置: 首页 > news >正文

算法-二叉树的最大路径和

为了找到二叉树的最大路径和,我们需要考虑所有可能的路径,包括不经过根节点的路径,所以其实如果你从整体上来一条路径一条路径的遍历,太复杂,我们可以换个思路,从每个节点出发,就把那个节点当成根节点,考虑以这个节点为根的最大路径和。这个路径可能只包含左子树或者右子树,或者左右子树都包含。

这里有个很重要的点,当考虑一个节点时,我们实际上只关心以它为根的子树中通过它的最大路径和,不需要知道这条路的完整细节,只需要知道这个最大值是多少。

所以我们用递归和回溯的思想来解决这道题:

  1. 定义一个辅助函数:该函数将返回以当前节点为根的子树中,通过当前节点的最大单边路径和(即只向左或只向右延伸的最大路径和)以及通过当前节点的最大路径和(可能包括左子树和右子树)。但是,对于全局的最大路径和,我们只需要考虑单边路径和,因为全局最大路径可能不经过根节点。

  2. 递归逻辑

    • 递归地计算左子树和右子树的最大单边路径和。
    • 如果左子树或右子树的最大单边路径和为负,我们可以选择不将其包括在路径中(因为加入负值会降低路径和)。
    • 计算通过当前节点的最大路径和(如果左右子树的最大单边路径和都非负,则包括它们;否则,只包括非负的那一边)。
    • 更新全局最大路径和(只考虑单边路径和)。
  3. 回溯:在递归返回之前,需要撤销对当前节点状态的影响,因为我们需要从多个不同的路径来考虑问题。

  4. 初始化:全局最大路径和初始化为最小整数值(例如,Integer.MIN_VALUE),因为路径和至少为负数(只有一个负节点时)。但在实际应用中,由于题目说明节点值为0到9,我们可以初始化为比任何可能的单个节点值都小的数,如-1(如果确信树不为空)。

  5. 返回:返回全局最大路径和

代码如下:

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. 音频路由的基本概念 源&#xff08;Source&#xff09;&#xff1a;音频信号的发出方&#xff0c;通常是一个音频输入设备&#xff0c;如麦克风、音频播放设备等。接收端&#xff08;Sink&#xff09;&#xff1a;音频信号的接收方&#xff0c;通常是音频输出设备&#xff…...

母线槽温度监测的哪个部位?安科瑞母线槽测温解决方案-安科瑞黄安南

安科瑞生产厂家&#xff1a;黄安南 壹捌柒/陆壹伍/零陆贰叁柒 母线槽简单来说充当着电缆的角色只不过它是大电流的输送设备&#xff0c;一般是铜排或者绿排做导体&#xff0c;用非烯性绝缘材料做支撑&#xff0c;搭配金属外壳。相对于电缆来说母线槽的载流能力强、电能损耗低、…...

《深度学习》—— 模型的部署

文章目录 一、部署方式二、部署步骤三、注意事项 深度学习中模型的部署是将训练好的模型应用到实际场景中的过程&#xff0c;以下是对深度学习模型部署的详细解析&#xff1a; 一、部署方式 嵌入式设备部署&#xff1a;将深度学习模型部署到嵌入式设备中&#xff0c;如智能手机…...

多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 程序员节&#xff0c;小贝特意为大家准备了重磅福利&#xff01;新用户使用邀请码「1024」注册 http://OpenBayes.com&#xff0c;即可获得 20 小时单卡 A6000 的免费使用时长&#xff0c;价值 80 元&#xff0c;资源 1 个月有效。仅限今日&#xf…...

OSPF特殊区域及其他特性

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

动态量化:大模型在端侧CPU快速推理方案

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

什么是零拷贝以及其应用场景是什么?

写在前面 本文看下什么是零拷贝&#xff0c;以及其具体的应用场景有哪些。 1&#xff1a;什么是零拷贝 想要解释清楚什么是零拷贝&#xff0c;需要先来看下常规的阻塞io一次io的过程&#xff0c;这里以从文件读取内容然后写到socket为例来看下&#xff0c;如下&#xff1a; …...

开源(open source)是什么?为什么要开源?

为什么开源这个问题挺复杂&#xff0c;这里就从社会面以及个人两个角度来说。当然个人层面的开源其实是建立在社会面形成开源氛围后开始的。 社会面开源 这里举一个例子&#xff0c;既互联网从 web1.0 到 web3.0 &#xff08;开源 → 闭源 → 再开源&#xff09;的历程&#…...

基于Spring Boot的论坛网站:从零到部署

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

vue开发的一个小插件vue.js devtools

可打开谷歌商城的情况下&#xff0c;不可打开的可以到极简插件里面去下载 极简插件官网_Chrome插件下载_Chrome浏览器应用商店 搜索vue即可...

GraphLLM:基于图的框架,通过大型语言模型处理数据

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

HarmonyOS 5.0应用开发——Navigation实现页面路由

【高心星出品】 Navigation实现页面路由 Navigation&#xff1a;路由导航的根视图容器&#xff0c;一般作为页面&#xff08;Entry&#xff09;的根容器去使用&#xff0c;包括单页面&#xff08;stack&#xff09;、分栏&#xff08;split&#xff09;和自适应&#xff08;a…...

物联网行业应用实训室建设方案

一、建设背景 随着物联网技术的迅猛发展和广泛应用&#xff0c;物联网产业已跃升为新时代的经济增长引擎&#xff0c;对于产业升级和社会信息化水平的提升具有举足轻重的地位。因此&#xff0c;为了满足这一领域的迫切需求&#xff0c;培养具备物联网技术应用能力的优秀人才成…...

SOLIDWORKS 2025更灵活零件建模

SOLIDWORKS 2025更灵活零件建模 北京众联亿诚是达索官方授权的SOLIDWORKS经销商&#xff0c;专业经销SOLIDWORKS正版软件并提供免费试用、培训认证、二次开发等增值服务。 在工程设计领域&#xff0c;SOLIDWORKS作为一款功能强大的三维CAD软件&#xff0c;一直以其优越的性能…...

智能巡检机器人的大模型训练

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

RabbitMQ系列学习笔记(九)--路由模式

文章目录 一、路由模式原理二、多重绑定三、路由模式实战1、消费者代码2、生产者代码3、运行结果分析 本文参考 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、路由模式原理 使用发布订阅模式时&#x…...

[OS] pthreads-1

线程的基本概念 线程是进程中的一个单一的执行流。一个进程可以包含多个线程&#xff0c;这些线程共享进程中的资源&#xff0c;并且在相同的地址空间中执行。多线程是提高应用程序并行性的流行方法。例如&#xff0c;在浏览器中&#xff0c;不同的标签页可以视作独立的线程。…...

ThreeJS入门(137):THREE.StringKeyframeTrack 知识详解,示例代码

作者&#xff1a; 还是大剑师兰特 &#xff0c;曾为美国某知名大学计算机专业研究生&#xff0c;现为国内GIS领域高级前端工程师&#xff0c;CSDN知名博主&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;webgl&#xff0c;ThreeJS&#xff0c;canvas&#xf…...

用大模型或者向量模型比如huggingface上的模型,处理一批图片,对该图片进行分类,检索

要使用大模型或向量模型对图片进行分类和检索,通常可以采用以下几种方法: 1. **图像分类**:使用预训练的图像分类模型(如ResNet、EfficientNet等)对图片进行分类。 2. **图像特征提取**:使用预训练的模型(如CLIP、ResNet等)提取图像的特征向量,然后进行相似度检索。 …...

Mac 使用 zsh 终端提示 zsh: killed 的问题

我的脚本的内容为&#xff1a; #!/bin/bashset -epids$(ps -ef | grep consul | grep -v grep | awk {print $2})for pid in $pids; doecho "kill process: $pid"kill -9 $pid donecd $(dirname $0)nohup ./consul agent -dev > nohup.log &可以看到这是一个…...

数字后端零基础入门系列 | Innovus零基础LAB学习Day6

今天没有具体的数字IC后端lab实验。今天的重点是熟悉掌握静态时序分析STA中的几类timing path以及setup和hold检查机制&#xff08;包含setup和hold计算公式&#xff09;。 芯片流片失败的那些故事 数字后端零基础入门系列 | Innovus零基础LAB学习Day5 等大家把今天内容学习…...

(Linux驱动学习 -13).SPI驱动实验

目录 一.SPI驱动相关结构体与函数 1.struct spi_master 结构体 2.申请 spi_master - spi_alloc_master 3.释放 spi_master - spi_master_put 4.向内核注册 spi_master - spi_register_master 5.注销掉 spi_master 6.struct spi_driver 结构体 7.向内核注册 spi_driver -…...

Angular 框架入门教程:从安装到路由、服务与状态管理详解

一、引言 在前端开发领域&#xff0c;Angular 是一个强大且流行的框架。它由 Google 维护&#xff0c;基于 TypeScript&#xff0c;采用模块化设计&#xff0c;提供了组件化开发、依赖注入、路由、表单处理等丰富功能&#xff0c;旨在帮助开发者构建高效、可维护的单页应用程序…...

【华为HCIP实战课程十八】OSPF的外部路由类型,网络工程师

一、外部路由类型: 上节讲的外部路由类型,无关乎COST大小,OSPF外部路由类型1优先于外部路由类型2 二、转发地址实验拓扑 我们再SW3/R5/R6三台设备运行RIP,SW3即运行RIP又运行OSPF SW3配置rip [SW3-rip-1]ver 2 [SW3-rip-1]network 10.0.0.0 AR5去掉ospf配置和AR6配置rip…...

oss 简单命令(已亲测)

1、 服务器本地文件复制到OSS指定目录 ./ossutil cp -r /opt/post/afc/afcServer/afcenter/logs/ oss://oss-name/ScBak/20230608/ -c /opt/post/ossconfig 2、在oss服务器上创建文件夹 ./ossutil mkdir oss://oss-name/ScBak/20230608/dam -c /opt/post/ossconfig 3、查…...

申请https证书

引入证书: 当服务器使用HTTPS之前都会申请一份证书&#xff0c;证书是为了证明服务端公钥的权威性&#xff0c;服务器向浏览器传输证书&#xff0c;浏览器再从证书里获取公钥&#xff0c;证书明文数据签名。 如何理解CA签发证书的过程 a.CA会有自己的公钥 和 私钥&#xff…...

trtexec 工具使用

本文介绍trtexec工具的使用&#xff0c;trtexec可以实现onnx模型导出trt模型、耗时分析和模型优化分析等功能&#xff0c;本节将对 trtexec的运用进行介绍。 1.trtexec trtexec是官方提供的命令行工具&#xff0c;主要用于一下三个方面 生成模型序列化文件&#xff1a;由ONNX文…...

视频直播网站/怎样推广网站

/** 1.ruby环境 官网下载的&#xff1a;tar -zxvf xxxxx安装包xxxx 解压到/opt/ruby/下 执行命令 cd ruby ./configure --prefix/usr/local/ruby; 文件夹如果不存在就新建 make make install 2.ruby的redis客户端安装 下载&#xff1a;https://rubygems.org/downloads/redi…...

剑阁住房和城乡建设厅网站/百度一下首页

一、原理&#xff1a; 构造函数一般用来初始化对像的. 和类同名&#xff1b; 析构函数是销毁对像占用的资源的 ,在类名前一个 “ ~ ” 当对象被创建时&#xff0c;构造函数被自动执行。当对象消亡时&#xff0c;析构函数被自动执行。一个简单的实例&a…...

b2b电子商务网站调研报告国家开放大学/网站制作需要多少钱

{if(xif(xa[mid]) printf(\ else printf(\} 三、数值计算常用经典算法&#xff1a; 1&#xff0e;级数计算级数计算的关键是“描述出通项”&#xff0c;而通项的描述法有两种&#xff1a;一为直接法、二为间接法又称递推法。直接法的要领是&#xff1a;利用项次直接写出通项式&…...

江苏省建设教育协会网站/东营seo

为什么要选择云原生数据库前言1. 传统数据库1.1 传统数据库概念1.2 传统数据库优缺点1.2.1 优点1.2.2 缺点2. 云原生数据库2.1 云原生数据库概念2.2 云化代表未来2.3 云原生数据库的优势2.3.1 高性能2.3.2 高可扩展性2.3.3 快速迭代2.3.4 节约成本2.3.5 高度安全3. 为什么选择亚…...

道真县城乡建设局网站/市场营销策划方案书

没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2021年4月&#xff0c;我有幸成为了字节跳动的一名高级测试工程师&#xff0c;正如标题所说…...

优惠购网站怎么做的/360官方网站网址

文章目录awesome系列实验室follow科研写作基础知识比赛方案解读Numpy相关awesome系列 https://github.com/murufeng/awesome_lightweight_networkshttps://github.com/kuanhungchen/awesome-tiny-object-detectionhttps://github.com/visionxiang/awesome-camouflaged-object-…...