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

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


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

三、解题思路

  1. 基本思路:
      初看这一题,好像没有思路。但是,仔细分析一下,其实每个节点无非就三种情况,一种是成为路径的根,另一种是非根,最后一种就是不选;如果是路径的根,那就要计算其左子树和右子树的路径和;如果是非根,那就选择左右子树最大的一个成为路径的一部分;如果左右子树+本身都是负的,那就不选了这个节点。
      个人建议:当碰到无法无从下手的题目,可以从细节考虑,分析可能发生的情况,然后每种情况要怎么处理。
  2. 具体思路:
    • 如果节点为空,则返回 0 ;
    • 计算左右子树最大路径;
    • 如果选取该节点为根,则更新最大值;
    • 如果不选该节点为根,则返回左右子树最大路径,如果为负,则返回 0 ;

四、参考代码

时间复杂度: O ( n ) \Omicron(n) O(n)【n 为节点数】
空间复杂度: O ( n ) \Omicron(n) O(n)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),* right(right) {}* };*/
class Solution {
public:int ans = -1000;int maxPathSum(TreeNode* root) {maxPath(root);return ans;}int maxPath(TreeNode* root) {if (!root)return 0;int l, r;l = maxPath(root->left);r = maxPath(root->right);// 选取该节点为根ans = max(ans, l + r + root->val);// 不选return max(0, max(l, r) + root->val);}
};

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【强弱分界】,股市动态多维波动 精准辅助工具 源码

该策略结合了多重技术指标&#xff0c;旨在通过高低点的动态波动分析&#xff0c;提供精准的买入、卖出信号及市场强弱判断。 本策略适用于&#xff1a; 中短期股市交易者&#xff0c;帮助判断市场的进出场时机。 高频交易和量化交易系统中的信号生成模块。 在波动较大的市场…

【IEEE出版 | 中国石油大学(华东)主办】第六届信息与计算机前沿术国际学术会议(ICFTIC 2024,12月13-15日)

第六届信息与计算机前沿术国际学术会议(ICFTIC 2024) 2024 6th International Conference on Frontier Technologies of Information and Computer 官方信息 会议官网&#xff1a;WWW.ICFTIC.ORG 2024 6th International Conference on Frontier Technologies of Information…

如何在SM30生成的维护表中增加选择框 CheckBox

用户想要在屏幕中显示选择框进行维护&#xff0c;如下图&#xff1a; 很简单&#xff0c;先通过 SE11 定义一个 CHAR1 类型的字段名&#xff0c;然后通过使用程序转到表维护生成器 进入到概述屏幕&#xff0c;双击&#xff0c;然后进入到屏幕布局&#xff1a; 先删除原来通过系…

极客争锋 智连未来 TuyaOpen Framework极客创意大赛正式开启

TuyaOpen Framework极客创意大赛正式开启 可选择基于: TuyaOpen Framework 原生开源包: https://github.com/tuya/tuyaopen 支持 Ubuntu/T2/T3/T5/ESP32/ESP32C3等多款芯片TuyaOpen Arduino:https://github.com/tuya/arduino-tuyaopen支持 T2/T3/T5等多款芯片TuyaOpen LuaNode…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面&#xff0c;等待几分钟&#xff0c;即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份&#xff08;密码&#xff1a;devuser…

c++ 左值、右值、左值引用()、右值引用(),移动构造和std::move

左值和右值 不是等于号的左边和右边 &#xff01;&#xff01;&#xff08;一部分场景下是这样&#xff09; 右值可以描述成一个临时值 c 左值、右值、左值引用、右值引用&& 左值右值左值引用右值引用结论 第二弹~ 你可以完全不看上面的解释移动语义移动构造和move 左…

黑马嵌入式开发入门模电基础学习笔记

学习视频: 黑马程序员嵌入式开发入门模电&#xff08;模拟电路&#xff09;基础 文章目录 背景介绍电流电压组件仿真三极管ne555PCBEDA案例&#xff1a;非接触式电笔案例&#xff1a;电子琴 背景介绍 电流 电压 组件 仿真 三极管 mos管 ne555 PCB EDA 案例&#xff1a;非接触…

Tomcat启动过程中cmd窗口(控制台)中文乱码的问题

目录 一、问题产生 二、问题分析 三、解决方法(2种) 一、问题产生 在服务器上使用新的Tomcat9(绿色版ZIP),打开一个cmd窗口后,将路径定位到“tomcat\bin\”目录,运行“startup.bat”。程序会自动打开一个新窗口,这个是Java程序的运行窗口,但是里面的中文全是乱码,如…

Neo4j Desktop 和 Neo4j Community Edition 区别

Neo4j Desktop 和 Neo4j Community Edition 的主要区别在于它们的用途、功能以及安装和管理方式。以下是这两者的详细对比&#xff1a; 1. Neo4j Desktop Neo4j Desktop 是一个图形化的桌面应用程序&#xff0c;主要为开发人员和个人使用提供了一个便捷的环境来安装、管理和运…

FebHost:企业注册.UK域名步骤--了解英国商业环境

企业注册.UK域名步骤&#xff1a;了解英国商业环境 对于希望拓展国际业务的公司和企业家来说&#xff0c;在英国开展业务具有众多优势。英国是一个对企业友好的目的地&#xff0c;吸引着初创企业和国际公司&#xff0c;并将自己定位为首屈一指的全球经济强国&#xff0c;在欧洲…

无人机动力系统测试-实测数据与CFD模拟仿真数据关联对比分析

我们经常被问到这样的问题&#xff1a;“我们计划运行 CFD 仿真&#xff0c;我们还需要对电机和螺旋桨进行实验测试吗&#xff1f;我们可能有偏见&#xff0c;但我们的答案始终是肯定的&#xff0c;而且有充分的理由。我们自己执行了大量的 CFD 仿真&#xff0c;但我们承认&…

cantos7.9系统-部署mysql-8.0.35

前言:MySQL是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它基于SQL&#xff08;Structured Query Language&#xff09;进行操作。以下是MySQL的一些基本介绍&#xff1a; 开源&#xff1a;MySQL由瑞典MySQL AB公司开发&#xff0c;后来被Su…

预测AI如何提升销售绩效管理:五大方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

# 第20章 Cortex-M4-触摸屏

第20章 Cortex-M4-触摸屏 20.1 触摸屏概述 20.1.1 常见的触摸屏分类 电阻式触摸屏、电容式触摸屏、红外式触摸屏、表面声波触摸屏 市场上用的最多的是电阻式触摸屏与电容式触摸屏。红外管式触摸屏多用于投影仪配套设备。 电阻式触摸屏构成&#xff1a;整个屏由均匀电阻构成…

Selenium自动化测试

片头 嗨~小伙伴们&#xff0c;今天&#xff0c;我们来开启新的篇章---Selenium自动化测试&#xff0c;准备好了吗&#xff1f;咱们开始咯&#xff01; 一、自动化测试 指通过专门的软件工具和脚本来执行测试任务&#xff0c;而不需要人工干预。它可以自动执行各种测试任务&am…

下一代以区域为导向的电子/电气架构

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…

RH850-F1KMS1 DMA数据转移

DMA简介 随着汽车电子系统和工业自动化的需求不断增长&#xff0c;DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;技术在提高数据传输效率方面扮演着重要角色。在本篇文章中&#xff0c;我们将探讨RH850微控制器如何高效实现DMA传输&#xff0c;以…

MOSFET电路栅源极GS之间并联电容后,MOS炸管原因分析

1、前言 在介绍&#xff0c;在进行MOSFET相关的电路设计时&#xff0c;可能会遇到MOSFET误导通的问题&#xff0c;为了解决此问题&#xff0c;我们提出了两种方法&#xff0c;一种是增大MOSFET栅极串联电阻的阻值&#xff0c;另外一种是在MOSFET栅-源极之间并联一个电容&#…

Keil uvision的edition

0 Preface/Foreword 0.1 参考网址 https://zhuanlan.zhihu.com/p/456069876 1 Keil版本介绍 版本介绍&#xff1a; Keil Lite&#xff08;免费版&#xff09;&#xff1a;最多32KB代码&#xff0c;无法使用中间件Keil Essential&#xff08;基础版&#xff09;&#xff1a;没…

I/O文件:文件的关闭

int fclose(FILE *stream); 成功关闭返回1&#xff0c;关闭失败返回EOF即-1&#xff0c;并设置errno。 流关闭时自动刷新缓冲中的数据并释放缓冲区 当一个程序正常终止时&#xff0c;所有打开的流都会被关闭 流一旦关闭就不能执行任何操作。 运行结果&#xff1a; 若未成功打…