leetcode:112. 路径总和

news2025/4/7 2:40:19

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。

示例 2:

输入:root = [1,2,3], targetSum = 5
输出:false
解释:树中存在两条根节点到叶子节点的路径:
(1 --> 2): 和为 3
(1 --> 3): 和为 4
不存在 sum = 5 的根节点到叶子节点的路径。

示例 3:

输入:root = [], targetSum = 0
输出:false
解释:由于树是空的,所以不存在根节点到叶子节点的路径。

提示:

  • 树中节点的数目在范围 [0, 5000] 内
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

步骤1: 问题分析

问题性质
  • 本题是一个经典的二叉树路径和问题,需要判断是否存在一条从根节点到叶子节点的路径,其路径上节点值的和等于给定的 targetSum
输入条件
  1. 根节点 root:二叉树的根节点。
  2. 目标和 targetSum:一个整数,表示目标路径和。
输出条件
  • 返回 true 如果存在符合条件的路径;否则返回 false
限制与边界条件
  1. 节点范围:节点数目在 [0, 5000] 之间。
  2. 节点值范围[-1000, 1000]
  3. 边界条件
    • 树为空(root == null),返回 false
    • 单节点树,检查该节点值是否等于 targetSum

步骤2: 解题步骤与算法设计

算法设计思路
  • 本题的核心是遍历二叉树并计算路径和,判断是否存在等于 targetSum 的路径。
  • 适合的算法
    1. 深度优先搜索(DFS)
      • 利用递归,沿着路径累加节点值。
      • 如果到达叶子节点并且路径和等于 targetSum,返回 true
    2. 广度优先搜索(BFS)
      • 利用队列同时存储节点和当前路径和,逐层遍历树。
      • 在遍历过程中检查是否存在满足条件的路径。
最佳算法选择
  • DFS 是最佳选择,因为可以直接递归到叶子节点,逻辑简单且代码简洁。
  • 时间复杂度:O(N),其中 N 是节点数,最坏情况下需要访问所有节点。
  • 空间复杂度:O(H),其中 H 是树的高度,递归栈的深度。
具体解题步骤
  1. 边界条件判断
    • 如果 root == null,直接返回 false
  2. 递归判断路径和
    • 当前节点的路径和为 当前路径和 + 当前节点值
    • 如果当前节点是叶子节点且路径和等于 targetSum,返回 true
    • 否则递归地检查左子树和右子树。
  3. 综合左右子树结果
    • 左右子树只要有一个返回 true,最终结果就为 true

步骤3: C++ 代码实现

步骤4: 启发与优化

启发
  • 递归可以高效解决树相关问题,但需要注意递归栈的深度限制。
  • 考虑边界条件(如空树或单节点树)是避免错误的重要一环。
优化
  • 若树很深,递归可能导致栈溢出,改用迭代方法(BFS)可以避免这一问题。

步骤5: 实际应用场景

行业应用

场景:电商网站的推荐引擎

  • 应用示例:在商品推荐中,构建二叉树表示用户点击路径(每个节点是用户点击的商品),目标是判断是否存在一条点击路径,满足总花费等于用户预算。
  • 实现:将用户预算作为 targetSum,树节点值为商品价格,利用上述算法快速判断是否有符合预算的商品组合路径。

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

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

相关文章

新160个crackme - 100-E-crackme

运行分析 需根据机器码&#xff0c;填写正确注册码 PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida无法搜到字符串&#xff0c;使用暂停法找关键函数 首先启动ida动态调试&#xff0c;点击注册来到错误弹窗 点击Debugger -> Pause process 发现断…

VSCode 间距太小

setting->font family 使用&#xff1a;Consolas, Courier New, monospace 字体

七、电机三环控制

电机三环控制指的是&#xff0c;直流有刷电机三环&#xff08;电流环速度环位置环&#xff09;PID 控制。 1、三环PID控制原理 三环 PID 控制就是将三个 PID 控制系统&#xff08;例如&#xff1a;电流环、速度环以及位置环&#xff09;串联起来&#xff0c;然后对前一个系统…

【快讯】亚马逊(AMZN.US)关联方拟出售7.08万股股份,价值约1,407.69万美元

根据美国证券交易委员会&#xff08;SEC&#xff09;美东时间11月21日披露的文件&#xff0c;亚马逊(AMZN.US)关联方BEZOS EARTH FUND FOUNDATION拟于11月21日出售7.08万股普通股股份&#xff0c;总市值约1,407.69万美元。此外&#xff0c;BEZOS EARTH FUND FOUNDATION自2024年…

影响电阻可靠性的因素

一、影响电阻可靠性的因素&#xff1a; 影响电阻可靠性的因素有温度系数、额定功率&#xff0c;最大工作电压、固有噪声和电压系数 &#xff08;一&#xff09;温度系数 电阻的温度系数表示当温度改变1摄氏度时&#xff0c;电阻阻值的相对变化&#xff0c;单位为ppm/C.电阻温度…

51c大模型~合集76

我自己的原文哦~ https://blog.51cto.com/whaosoft/12617524 #诺奖得主哈萨比斯新作登Nature&#xff0c;AlphaQubit解码出更可靠量子计算机 谷歌「Alpha」家族又壮大了&#xff0c;这次瞄准了量子计算领域。 今天凌晨&#xff0c;新晋诺贝尔化学奖得主、DeepMind 创始人哈萨…

深入了解 Linux htop 命令:功能、用法与示例

文章目录 深入了解 Linux htop 命令&#xff1a;功能、用法与示例什么是 htop&#xff1f;htop 的安装htop的基本功能A区&#xff1a;系统资源使用情况B区&#xff1a;系统概览信息C区&#xff1a;进程列表D区&#xff1a;功能键快捷方式 与 top 的对比常见用法与示例实际场景应…

XML文件(超详细):XML文件概念、作用、写法、如何用程序解析XML、写入XML、dom4j框架、DTD文档、schema文档

目录 1、什么是XML文件&#xff1f;和properties属性文件有什么区别&#xff1f;和txt文本文件有什么区别&#xff1f; 2、XML文件的用途 3、XML的格式 4、如何解析XML文件 5、如何写入XML文件 6、约束XML的书写格式 6.1 DTD文档-约束书写格式&#xff0c;但是不能约束具…

通过端口测试验证网络安全策略

基于网络安全需求&#xff0c;项目中的主机间可能会有不同的网络安全策略&#xff0c;这当然是好的&#xff0c;但很多时候&#xff0c;在解决网络安全问题的时候&#xff0c;同时引入了新的问题&#xff0c;如k8s集群必须在主机间开放udp端口&#xff0c;否则集群不能正常的运…

国产光耦合器的竞争优势与市场发展前景

国产光耦合器近年来在技术研发和市场表现上取得了显著进步&#xff0c;逐渐在国际市场中占据了一席之地。作为实现电气隔离和信号传输的核心器件&#xff0c;光耦合器在工业控制、通信设备、消费电子等领域中有着广泛的应用。国产光耦合器凭借其独特的成本、技术和市场优势&…

Wi-Fi 8标准已经发布,准备好了吗

今年初&#xff0c;Wi-Fi联盟宣布完成并推出了Wi-Fi 7高级无线标准的认证&#xff0c;将改善家庭、办公室和工业用途设备的连接性能&#xff0c;同时还带来了新的认证标志。其在Wi-Fi 6E的基础上引入了320MHz信道带宽、4096-QAM调制、Multi-RU、多链路操作、增强MU-MIMO、多AP协…

STM32F407ZGT6驱动TCA9535扩展16路IO

目录 一、TCA9535 I/O 扩展器1、TCA9535 的 I2C 地址2、TCA9535 的读写操作3、TCA9535 的控制寄存器4、输入寄存器 0/15、输出寄存器 0/16、极性反转寄存器 0/17、配置寄存器 0/1 二、硬件设计1、接线说明2、硬件参考 三、程序设计1、tca9535_softiic.c2、tca9535_softiic.h3、…

一分钟学习数据安全——数据安全风险的系统化应对思路

数据是组织的重要资产&#xff0c;未经授权的数据访问可能导致数据泄露、数据篡改、隐私侵犯和合规风险等问题。企业可以通过数据访问控制来提高信息系统在数据全生命周期管理中的安全性。企业可以引入IAM系统&#xff0c;来控制身份来管理权限。通过对用户访问权限的管理和合适…

空间计算、物理计算、实时仿真与创造拥有「自主行为」的小狗 | 播客《编码人声》

「编码人声」是由「RTE开发者社区」策划的一档播客节目&#xff0c;关注行业发展变革、开发者职涯发展、技术突破以及创业创新&#xff0c;由开发者来分享开发者眼中的工作与生活。 虚拟世界与现实世界的界限逐渐模糊&#xff0c;已然成为不争的事实。但究竟哪些曾经的幻想已然…

shell脚本(三)

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

一次封装,解放双手:Requests如何实现0入侵请求与响应的智能加解密

引言 之前写了 Requests 自动重试的文章&#xff0c;突然想到&#xff0c;之前还用到过 Requests 自动加解密请求的逻辑&#xff0c;分享一下。之前在做逆向的时候&#xff0c;发现一般医院的小程序请求会这么玩&#xff0c;请求数据可能加密也可能不加密&#xff0c;但是返回…

基于Springboot+Vue的救灾物资调动系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

『 Linux 』网络层 - IP协议(一)

文章目录 IP协议报文格式IP协议报文如何进行报头与有效载荷分离 网段划分CIDR特殊的IP地址 IP地址的数量限制私有IP和公网IP理解运营商 IP协议报文格式 IP协议报文格式与TCP协议的报文格式类似; IP报文的宽度也是32位; 对应的IP的实际报头为20字节为定长报头(固定长度); 版本 …

[cg] vulkan external_memory

最近在写硬件编码的代码&#xff0c;渲染器渲染出的RT需要给到编码器做硬编&#xff0c;有两种方法能做。 一是通过 map的方式&#xff0c;把显存里的数据读到cpu&#xff0c;拷贝一份cpu data给编码器&#xff0c;但这种方式会有内存拷贝的开销。所以&#xff0c;我们思考是否…

springboot课程答疑系统(代码+数据库+LW)

摘要 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个专门适应师生交流形式的网站。本文介绍了课程答疑系统的开发全过程。通过分析企业对于课程答疑系统的需求&#xff0c;创建了一个计算机管理课程答疑系统的方案。文章…