news 2026/6/10 15:01:55

力扣刷题:路径总和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣刷题:路径总和

题目:
给你二叉树的根节点 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
解释:由于树是空的,所以不存在根节点到叶子节点的路径。

解析:
这道题使用dfs+回溯来解决:

使用深度优先搜索遍历所有可能的路径,在遍历过程中:
从根节点开始,记录当前路径的累加和
到达叶子节点时,检查路径和是否等于目标值
找到一条符合条件的路径就立即返回

如何表示路径和?
从目标值开始,每经过一个节点就减去其值,检查是否减到0

递归终止条件是什么?
到达叶子节点时,判断剩余值是否为0
如果当前节点为空,返回false

如何遍历所有路径?
对每个非叶子节点,分别探索其左子树和右子树
使用递归进行深度优先搜索
具体代码:

/** * @param {TreeNode} root * @param {number} targetSum * @return {boolean} */varhasPathSum=function(root,targetSum){// 1. 处理空树的情况:空树没有路径,直接返回falseif(!root)returnfalse// 2. 从根节点开始遍历,初始sum = targetSum - 根节点值// 因为根节点的值已经计入路径和了returntraversal(root,targetSum-root.val)};functiontraversal(node,sum){// 3. 终止条件1:到达叶子节点,且剩余sum为0// sum === 0 表示路径和正好等于targetSum// !node.left && !node.right 确保是叶子节点if(sum===0&&!node.left&&!node.right)returntrue// 4. 终止条件2:到达叶子节点,但剩余sum不为0// 说明这条路径的和不等于targetSumif(sum!==0&&!node.left&&!node.right)returnfalse// 5. 递归处理左子树if(node.left){// 5.1 做出选择:将左子节点的值从sum中减去sum-=node.left.val// 5.2 递归探索左子树if(traversal(node.left,sum)){returntrue// 如果左子树找到符合条件的路径,直接返回true}// 5.3 撤销选择(回溯):恢复sum的值// 因为要尝试右子树,需要回到之前的状态sum+=node.left.val}// 6. 递归处理右子树if(node.right){// 6.1 做出选择:将右子节点的值从sum中减去sum-=node.right.val// 6.2 递归探索右子树if(traversal(node.right,sum)){returntrue// 如果右子树找到符合条件的路径,直接返回true}// 6.3 撤销选择(回溯):恢复sum的值sum+=node.right.val}// 7. 左右子树都没有找到符合条件的路径,返回falsereturnfalse}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 13:34:32

Ultralytics YOLOv8 使用全指南:训练与推理

Ultralytics YOLOv8 使用全指南:训练与推理 在计算机视觉领域,目标检测模型的演进始终围绕着一个核心命题:如何在精度、速度和易用性之间找到最佳平衡。YOLO(You Only Look Once)自2015年由 Joseph Redmon 提出以来&a…

作者头像 李华
网站建设 2026/6/10 12:43:09

USB3.0与USCAR2汽车连接器规范解读

USB3.0与USCAR2汽车连接器规范解读 在一辆智能汽车的中控台前,用户插入U盘准备播放4K视频——画面却卡顿、加载缓慢;或是想通过USB接口为手机快充,却发现电量不升反降。这些看似“小问题”的背后,往往隐藏着一个被忽视的关键部件&…

作者头像 李华
网站建设 2026/6/10 12:34:41

基于知识图谱的图书推荐系统开题报告

附表1本科毕业论文(设计)开题报告论文题目: {{Projects-名-Sub(0,27)-PadR(27)}}{{Projects-名称-Sub(27)-PadR(31)}}学生姓名: {{StuInfo-姓名-PadR(16)}} 学 号: {{StuInfo-学生编号-PadR(16)}} 专 业: {{StuInfo-专…

作者头像 李华
网站建设 2026/6/9 21:02:43

java springboot基于微信小程序的大学校园失物招领系统(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 摘要:针对大学校园失物招领信息传播低效、匹配困难等问题,本…

作者头像 李华
网站建设 2026/6/10 12:46:41

java springboot基于微信小程序的二手推荐交易平台系统(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 摘要:在共享经济与绿色消费理念推动下,二手交易市场蓬勃发展…

作者头像 李华