【LeetCode热题100】124.二叉树的最大路径和(二叉树)

一.题目要求

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 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

提示:
树中节点数目范围是 [1, 3 * 104]
-1000 <= Node.val <= 1000

四.解题思路

这题在递归讨论情况的时候掉了个坑,看了一下评论区有老哥也提到了,就直接引用了。
在这里插入图片描述
可以再简化一下,不用考虑5,6,因为左右会作为根提前出现

五.代码实现

class Solution {
public:int maxPathSum(TreeNode* root) {dfs(root);return m;}int dfs(TreeNode* root) {if(!root) return -99999;int l = dfs(root->left);int r = dfs(root->right);int lroot = l + root->val;int rroot = r + root->val;int lrroot = l + r + root->val;int val = root->val;int mmax = max(val, max(lrroot, max(lroot, rroot)));if(mmax > m) m = mmax;return max(val, max(lroot, rroot));}
private:int m = INT_MIN;
};

在这里插入图片描述

六.题目总结

分类讨论,什么情况下可以作为最终结果,什么情况下可以作为递归返回值,二者不是一回事。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Doris实践——叮咚买菜基于OLAP引擎的应用实践

目录 前言 一、业务需求 二、选型与对比 三、架构体系 四、应用实践 4.1 实时数据分析 4.2 B端业务查询取数 4.3 标签系统 4.4 BI看板 4.5 OLAP多维分析 五、优化经验 六、总结 原文大佬介绍的这篇Doris数仓建设实践有借鉴意义的&#xff0c;这些摘抄下来用作沉淀学…

Windows MySQL通过data 文件夹恢复数据

前言 在MySql数据库中,为了备份和恢复数据,通常会使用mysqldump工具来导出和导入数据。但是&#xff0c;如果数据库非常大&#xff0c;name导出和导入数据可能会需要很长时间。这时&#xff0c;一种更快速的备份和恢复数据的方式就是直接复制mysql的data文件夹。 什么是mysql的…

天然橡胶衬板的局限性

天然橡胶衬板的局限性 天然橡胶衬板作为一种广泛应用于工业领域的材料&#xff0c;以其独特的弹性和耐磨性受到了广泛的认可。然而&#xff0c;就像任何材料一样&#xff0c;天然橡胶衬板也存在一些局限性。本文将从材料性能、应用领域、环境影响和使用寿命等方面&#xff0c;…

【嵌入式开发 Linux 常用命令系列 1.4 -- grep -Ev 反向搜索】

请阅读【嵌入式开发学习必备专栏 】 文章目录 grep 的反向搜索 grep 的反向搜索 如果想从文件 a 中过滤掉包含字符串 “dash” 或 “tom” 的行&#xff0c;并将剩余的行写入到文件 b&#xff0c;可以使用 grep 命令配合正则表达式。使用 grep 的 -E 选项允许你指定一个扩展的…

c++ 的左值和右值如何理解

在C中&#xff0c;左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09;是表达式的分类&#xff0c;这个分类是基于表达式在程序中的位置和行为。理解左值和右值对于掌握C中的移动语义和高效编程非常重要。 左值&#xff08;lvalue&#xff09; 左值通常…

docker-compose mysql

使用docker-compose 部署 MySQL&#xff08;所有版本通用&#xff09; 一、拉取MySQL镜像 我这里使用的是MySQL8.0.18&#xff0c;可以自行选择需要的版本。 docker pull mysql:8.0.18二、创建挂载目录 mkdir -p /data/mysql8/log mkdir -p /data/mysql8/data mkdir -p /dat…

老程序员不讲武德

职业生涯的一些心得&#xff0c;不一定对&#xff0c;大家辨证的看吧 只有结论&#xff0c;没有推论&#xff0c;如果有感兴趣的topic可以在评论区留言&#xff0c;我给你讲故事 忠告 给即将踏入职场的同学一句忠告: "不要听信那些职场老油条的忠告" 竞争 刚毕业的时…

软件测试基础理论、测试用例及设计方法、易混淆概念总结【软件测试】

一.软件测试基础理论 1.软件定义 软件是计算机系统中与硬件相互依存的一部分&#xff0c;包括程序、数据以及与其相关文档 的完整集合。 程序是按事先设计的功能和性能要求执行的指令序列&#xff1b; 数据是使程序能正常操作信息的数据结构&#xff1b; 文档是与程序开发、维…

对form表单对象中数组中的字段进行校验的方法

当对form表单中&#xff0c;数组readings中的字段进行校验时&#xff0c;prop和rules绑定要写成动态的&#xff0c;如下代码 <div v-for"(item,index) in form.readings"><el-form-item label"上次读数" > <!--prop"scds"-->…

LocalDateTime与时间戳转换

LocalDateTime与时间戳转换 1. 为什么LocalDateTime转时间戳需要时区2. 工具类 1. 为什么LocalDateTime转时间戳需要时区 讲道理&#xff0c;不管在什么时区&#xff0c;系统获取当前时间的时间戳都是一样的【因为时间戳指的是自 1970 年1月1日以来的秒数&#xff0c;所以无论…

使用ai智能写作场景之gpt整理资料,如何ai智能写作整理资料

Ai智能写作助手&#xff1a;Ai智能整理资料小助手 Ai智能整理资料小助手可试用3天&#xff01; 通俗的解释一下怎么用ChatGPT来进行资料整理&#xff1a; 搜寻并获取指定数量的特定领域文章&#xff1a; 想像你在和我说话一样&#xff0c;告诉我你想要多少篇关于某个话题的文…

在 Windows 11 上安装 MongoDB

MongoDB 是一个流行的 NoSQL 数据库&#xff0c;它提供了灵活的数据存储方案&#xff0c;而 MongoDB Compass 则是一个可视化管理工具&#xff0c;可以更轻松地与 MongoDB 数据库交互和管理。在本文中&#xff0c;我们将介绍如何在 Windows 11 上安装 MongoDB&#xff0c;并配置…

ESCTF-Web赛题WP

0x01-初次见面-怦然心动:your name? 随便输入一个字 根据提示可以看到 我们需要看源代码 直接 搜索 secret 关键字或者 ESCTF flag ESCTF{K1t0_iS_S0_HAPPy} 0x02-小k的请求 更安全的传参 post 参数为ESCTF 值为 love 自己的ip 同时还有个要求 是需要从度娘转过来 https://www…

Java计算两个时间相差多少年

有时我们需要根据数据库中的日期&#xff0c;比如创建年月create_date,计算这条数据已经创建多久&#xff08;多少年&#xff09;&#xff0c; 目前我们是在jdk1.7环境下开发的&#xff0c;就先以此举例 获取Date类型日期值 我们存在数据表中的数据类型是varchar&#xff0c;…

QMT量化策略实盘(二)交易触发定时器run_time

上一篇分享中&#xff0c;介绍了QMT量化实盘中最常用的下单函数passorder&#xff0c;和它主要的参数。 如果再结合一个交易触发函数&#xff0c;就可以实现简单的量化交易策略了&#xff01;比如下面的代码可以实现&#xff1a; 在集合竞价期间以指定价买入中信证券100股 #c…

<el-table>设置一列为固定字段,其他列为循环生成

<el-table :data"tableData" style"width: 100%"><el-table-columnprop"name"label"固定字段名":formatter"formatter"></el-table-column><el-table-columnv-for"(item, index) in wordsColumns…

生成式AI的风险与挑战

生成式AI&#xff0c;即通过训练数据生成新的文本、图像或音频等内容的人工智能技术&#xff0c;具有很多潜在的风险与挑战。 1. 信息可信度&#xff1a;生成式AI往往是基于大量训练数据&#xff0c;但这些数据可能存在偏见、错误或虚假信息。生成的内容可能会引入不准确或误导…

前端理论总结(html5)——URL输入到页面渲染过程//离线存储

URL输入到页面渲染过程 1、首先&#xff0c;在浏览器地址栏中输入url 2、浏览器先查看浏览器缓存-系统缓存-路由器缓存&#xff0c;如果缓存中有&#xff0c;会直接在屏幕中显示页面内容。若没有&#xff0c;则跳到第三步操作。 3、在发送http请求前&#xff0c;需要域名解析(D…

从小白-入门-进阶-高阶,四个阶段详细讲解单片机学习路线!

大家好&#xff0c;今天给大家介绍从小白-入门-进阶-高阶&#xff0c;四个阶段详细讲解单片机学习路线&#xff01;&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 单片机学习路…

简单线程池的实现

线程池的代码可以写的很复杂&#xff0c;这里就稍微简单一些 首先来看一下线程池的原则&#xff0c;下面的大框是服务器&#xff0c;而在服务器中维护一个任务队列。 然后在server中预先创建一批线程&#xff0c;这批线程和任务队列合在一起只用向外界提供一个入队列的接口。 …