news 2026/4/27 4:18:25

力扣刷题:路径总和

作者头像

张小明

前端开发工程师

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/4/18 1:08:15

网站挂马方式与检测技术深度解析

Sonic驱动的“数字人挂马”技术解析:从类比到实践 你有没有想过,一张静态照片突然开口说话,就像老式电视里跳出来的主持人?这不是灵异事件,而是AI时代的内容革命。这种“让图像动起来、说起来”的能力,业内…

作者头像 李华
网站建设 2026/4/19 18:57:32

Open-AutoGLM本地部署成本下降70%,这3种硬件组合你必须知道

第一章:Open-AutoGLM本地部署的变革与意义随着大模型技术的快速发展,将高性能语言模型部署至本地环境已成为企业与开发者保障数据隐私、提升响应效率的关键路径。Open-AutoGLM 作为开源可定制的自动代码生成语言模型,其本地化部署不仅打破了对…

作者头像 李华
网站建设 2026/4/18 2:07:35

任务书(2025)(1)

四 川 轻 化 工 大 学本科毕业设计(论文)任务书设计(论文)题目:基于Spring boot直播引流网站的设计与实现学院:计算机科学与工程学院 专 业:计算机科学与技术班 级:2021级9班学…

作者头像 李华
网站建设 2026/4/21 20:38:09

java springboot基于微信小程序的旅居养老系统健康档案健康建议(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 摘要:在老龄化社会背景下,旅居养老模式兴起,健康…

作者头像 李华
网站建设 2026/4/26 23:52:29

别再闭门造车了!Open-AutoGLM必须直面的7个国际竞争现实

第一章:Open-AutoGLM在全球AI竞争格局中的定位 在当前全球人工智能技术迅猛发展的背景下,大模型已成为各国科技战略的核心组成部分。Open-AutoGLM作为开源自动化生成语言模型的代表性项目,正逐步在国际AI生态中占据独特地位。其设计理念聚焦于…

作者头像 李华
网站建设 2026/4/21 12:51:56

基于PyTorch的行人重识别流程修改与实现

基于PyTorch的行人重识别流程修改与实现 在智能监控系统日益普及的今天,如何从海量视频数据中快速定位特定个体,已成为安防、交通管理等领域亟待解决的核心问题。行人重识别(Person Re-Identification, Re-ID)正是为此而生的技术—…

作者头像 李华