news 2026/7/22 18:03:00

力扣刷题:路径总和

作者头像

张小明

前端开发工程师

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/7/20 15:35:32

Open-AutoGLM菜单权限管理实战(企业级安全控制方案曝光)

第一章:Open-AutoGLM菜单权限管理概述Open-AutoGLM 是一个基于大语言模型的自动化图形化工具平台,其核心功能之一是灵活的菜单权限管理系统。该系统通过角色驱动的方式控制用户对功能模块的访问权限,确保系统安全与操作合规。权限模型设计 系…

作者头像 李华
网站建设 2026/7/20 17:05:09

基于TensorFlow的旋转目标检测R2CNN实现

基于 TensorFlow 2.9 的旋转目标检测 R2CNN 实现 在遥感图像分析、自然场景文本识别和海上船舶监测等任务中,传统水平框(HBB)检测方法往往难以准确描述具有显著方向性的物体。例如,倾斜的飞机跑道、斜停的舰船或旋转排布的文字—…

作者头像 李华
网站建设 2026/7/19 16:15:28

模型自动优化真的可行吗,Open-AutoGLM是如何实现零人工干预调参的?

第一章:模型自动优化真的可行吗,Open-AutoGLM是如何实现零人工干预调参的?在深度学习领域,超参数调优长期依赖专家经验与反复实验。Open-AutoGLM 的出现挑战了这一传统范式,通过自动化机制实现了无需人工干预的模型优化…

作者头像 李华
网站建设 2026/7/11 5:25:18

Open-AutoGLM部署实战详解(新手必看版)

第一章:Open-AutoGLM部署实战概述Open-AutoGLM 是一个面向自动化自然语言任务的开源大模型推理框架,支持灵活的模型加载、动态提示工程与多后端部署能力。本章将介绍其核心部署流程与关键配置策略,帮助开发者快速构建高效稳定的推理服务。环境…

作者头像 李华
网站建设 2026/7/21 22:05:54

利用DFM文件实现自定义窗体样式

利用DFM文件实现自定义窗体样式:为DDColor黑白老照片修复工具打造专属界面 发这篇文章前其实已经搁置很久了,一开始是因为家里那台老电脑跑不动ComfyUI,每次启动都卡得像幻灯片。直到某天我在GitHub上刷到了那个叫DDColor的项目——能把泛黄的…

作者头像 李华
网站建设 2026/7/17 4:54:52

基于智能推荐的考研经验分享平台的设计与实现周记

第1-15周周记第1周工作任务:系统需求分析与设计工作记录:本周主要完成了对大学生兼职系统的需求分析,明确了管理员后台、学生端、企业端的主要功能需求。管理员后台需要实现兼职招聘发布与管理、投简信息处理、用户通知管理、学生咨询与企业回…

作者头像 李华