二叉树——路径总和
路径总和
链接
给你二叉树的根节点 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
解释:由于树是空的,所以不存在根节点到叶子节点的路径。
递归法
- 返回值和参数
返回值:就是搜索所有路径,不用处理返回值,所以bool
参数:节点,路径和
bool traversal(TreeNode* cur,int sum)
- 终止条件
到叶子节点,值等于和不等于
if(cur->left==NULL && cur->right==NULL && sum==targetSum) return true;if(cur->left==NULL && cur->right==NULL && sum!=targetSum) return false;
- 单次递归
sum+=cur->val;//写在判断前,就不需要回溯将sum-=cur->val,此处sum值不影响其他递归的sum值if(cur->left==NULL && cur->right==NULL && sum==targetSum) return true;//判断叶子节点if(cur->left==NULL && cur->right==NULL && sum!=targetSum) return false;//判断叶子节点if(cur->left) if(traversal(cur->left,sum,targetSum))return true;if(cur->right) if(traversal(cur->right,sum,targetSum)) return true;return false;
详细写
if(cur->left) {sum+=cur->left->val;if(traversal(cur->left,sum,targetSum))return true;sum-=cur->left->val;}if(cur->right) {sum+=cur->right->val;if(traversal(cur->right,sum,targetSum))return true;sum-=cur->right->val;}

sum计算的是一个子节点的值,判断子节点是否符合,不符合sum值要回溯的
如:函数参数的节点输入为1,处理左子节点2,sum+2,判断是否符合,不符合sum-2,这种记得中要加一下,看下面第二个代码
代码
class Solution {
public:bool traversal(TreeNode* cur,int sum,int targetSum){if(cur==NULL) return false;sum+=cur->val;if(cur->left==NULL && cur->right==NULL && sum==targetSum) return true;if(cur->left==NULL && cur->right==NULL && sum!=targetSum) return false;if(cur->left) if(traversal(cur->left,sum,targetSum))return true;if(cur->right) if(traversal(cur->right,sum,targetSum)) return true;return false;}bool hasPathSum(TreeNode* root, int targetSum) {int sum=0;return traversal(root,sum,targetSum);}
};
class Solution {
public:bool traversal(TreeNode* cur,int sum,int targetSum){if(cur==NULL) return false;// sum+=cur->val;if(cur->left==NULL && cur->right==NULL && sum==targetSum) return true;if(cur->left==NULL && cur->right==NULL && sum!=targetSum) return false;if(cur->left) {sum+=cur->left->val;if(traversal(cur->left,sum,targetSum))return true;sum-=cur->left->val;}if(cur->right) {sum+=cur->right->val;if(traversal(cur->right,sum,targetSum))return true;sum-=cur->right->val;}return false;}bool hasPathSum(TreeNode* root, int targetSum) {int sum=0;if(root!=NULL) sum=root->val; //用详细的,中间节点就没有计算了,要加上去return traversal(root,sum,targetSum);}
};
相关文章:
二叉树——路径总和
路径总和 链接 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点…...
WebDAV之π-Disk派盘+文件管理器
文件管理器 支持WebDAV方式连接π-Disk派盘。 推荐一款iOS上的免费文件管理器新秀。 文件管理器这是一款功能强大的文件管理工具,支持zip,rar,7z等压缩包的解压和压缩,支持小说,漫画,视频下载及播,极大提升日常办公,娱乐,文件管理的工作效率,使得文档的归档和管理随心…...
form表单单输入框回车提交事件处理
问题 form表单中如果只有一个输入框,在输入时按Enter回车键会出发默认事件自动提交表单,该交互是同步发生的,会导致页面刷新。 解决思路 有三种解决思路: 1. 增加input输入框的数量 如果form表单中不止一个input输入框&#…...
c++常用stl算法
1、头文件 这些算法通常包含在头文件<algorithm> <functional> <numeric>中。 2、常用遍历算法 for_each(v.begin(),v.end(), 元素处理函数/仿函数) 注意:在使用transform转存时,目标容器需要提取开辟合适的空间。 void printfunc(…...
非对称密钥PKCS#1和PKCS#8格式互相转换(Java)
目录一、序言二、代码示例1、Maven依赖2、工具类封装三、测试用例1、密钥文件2、公私钥PKCS1和PKCS8格式互相转换一、序言 之前在 《前后端RSA互相加解密、加签验签、密钥对生成》 中提到过PKCS#1格式和PKCS#8格式密钥的区别以及如何生成密钥。实际有些场景中有可能也会涉及到…...
java获取当前时间的方法:LocalDateTime、Date、Calendar,以及三者的比较
文章目录前言一、LocalDateTime1.1 获取当前时间LocalDate.now()1.2 获取当前时间的年、月、日、时分秒localDateTime.getYear()……1.3 给LocalDateTime赋值LocalDateTime.of()1.4 时间与字符串相互转换LocalDateTime.parse()1.5 时间运算——加上对应时间LocalDateTime.now()…...
npm link
正文npm link的用法假如我们想自己开发一个依赖包,以便在多个项目中使用。一种可行的方法,也是npm给我们提供的标准做法,那就是我们独立开发好这个 "依赖包",然后将它直接发布到 npm镜像站 上去,等以后想在其…...
Docker 如何配置镜像加速
Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如: 科大镜像:https://docker.mirrors.ustc.edu.cn/网易:https://hub-…...
阅读笔记7——Focal Loss
一、提出背景 当前一阶的物体检测算法,如SSD和YOLO等虽然实现了实时的速度,但精度始终无法与两阶的Faster RCNN相比。是什么阻碍了一阶算法的高精度呢?何凯明等人将其归咎于正、负样本的不平衡,并基于此提出了新的损失函数Focal L…...
ZCMU--5009: 龙虎斗
轩轩和开开正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有n个兵营(自左至右编号1~n),相邻编号的兵营之间相隔1厘米,即棋盘为长度为n-1厘米的线段。i号兵营里有ci位工兵。 下面图1为n 6的示例: 轩轩在左侧…...
创建项目(React+umi+typeScript)
项目框架搭建的方式react脚手架Ant-design官网一、安装方式npm二、安装方式yarn三、安装方式umi devreact脚手架 命令行: npx create-react-app myReactName项目目录结构: 浏览器运行,端口号3000: Ant-design官网 一、安装方…...
FISCO BCOS(二十七)———java操作WeBase
一、搭建fiscobcos环境 1.1、安装jdk1.8 https://blog.csdn.net/weixin_46457946/article/details/1232435131.2、安装mysql https://blog.csdn.net/weixin_46457946/article/details/1232447361.3、安装python https://blog.csdn.net/weixin_46457946/article/details/123…...
失眠时还在吃它?有风险,你了解过吗
失眠,是当代人的通病。所以解决失眠也成了刚需,市面上开始出现各种助眠产品。有商业机构调查发现,62%的90后消费者曾买过助眠产品,其中人气选手就是褪黑素。褪黑素本身就是人体天然存在的,与睡眠有关的物质,…...
星戈瑞收藏Sulfo-CY7 amine/NHS ester/maleimide小鼠活体成像染料标记反应
关于小鼠活体成像,就一定要提到CY活性染料标记反应: 用不同的活性基团的Cyanine菁染料和相应的活性基团的生物分子或小分子药物发生反应,链接到一起。 根据需要标记的抗原、抗体、酶、多肽等分子所带的可标记基团的种类(氨基、醛…...
守护最后一道防线:Coremail邮件安全网关推出邮件召回功能
根据Coremail邮件安全大数据中心2022年Q4季报显示,2021年CAC识别钓鱼邮件1.81亿,2022年上升至2.25亿,增幅高达24.1%。 这表明2022年平均每天有61万7088封钓鱼邮件被接收及发出,企业用户面临潜在经济损失不可估量。 尤其是活跃至今…...
Python实战之小说下载神器(二)整本小说下载:看小说不用这个程序,我实在替你感到可惜*(小说爱好者必备)
前言 这次的是一个系列内容给大家讲解一下何一步一步实现一个完整的实战项目案例系列之小说下载神器(二)(GUI界面化程序) 单章小说下载保存数据——整本小说下载 你有看小说“中毒”的经历嘛?小编多多少少还是爱看小说…...
ChatGPT三个关键技术
情景学习(In-context learning) 对于一些LLM没有见过的新任务,只需要设计一些任务的语言描述,并给出几个任务实例,作为模型的输入,即可让模型从给定的情景中学习新任务并给出满意的回答结果。这种训练方式能…...
考试系统 (springboot+vue前后端分离)
系统图片 下载链接 地址: http://www.gxcode.top/code 介绍 一款多角色在线培训考试系统,系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能,考试流程完善。 技术栈 Spr…...
ChatGPT告诉你:项目管理能干到60岁吗?
早上好,我是老原。这段时间最火的莫过于ChatGPT,从文章创作到论文写作,甚至编程序,简直厉害的不要不要的。本以为过几天热度就自然消退了,结果是愈演愈烈,热度未减……大家也从一开始得玩乐心态,…...
Python自动化测试框架【Allure-pytest功能特性介绍】
Python自动化测试框架【Allure-pytest功能特性介绍】 目录:导读 前言 生成报告 测试代码 目录结构 Allure特性 Environment Categories Fixtures and Finalizers allure.attach 总结 写在最后 前言 Allure框架是一个灵活的轻量级多语言测试报告工具&am…...
选择Taotoken的Token Plan套餐,为长期项目锁定更优成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 选择Taotoken的Token Plan套餐,为长期项目锁定更优成本 对于有长期、稳定大模型调用需求的企业或独立开发者而言&#…...
对比直接使用厂商API,Taotoken在稳定性方面的补充价值
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API,Taotoken在稳定性方面的补充价值 在构建依赖大模型能力的应用时,开发者通常会直接调用…...
随机微分方程与网络扩散模型:模拟阿尔茨海默病病理传播的不确定性
1. 项目概述:当数学遇见大脑,为阿尔茨海默病建模作为一名长期在计算神经科学与生物统计交叉领域摸爬滚打的研究者,我常常思考一个问题:我们如何用冷冰冰的数学方程,去刻画像阿尔茨海默病(AD)这样…...
[Android] VideoCook Glitch视频效果 v3.014.9 高级版
【Android】VideoCook Glitch视频效果 v3.014.9 高级版 链接:https://pan.xunlei.com/s/VOtMpY5BigBVra7bQlA73BLxA1?pwdb65a# VideoCook Glitch视频效果 是一款非常强大的安卓视频编辑工具,它为用户提供了丰富多样的视觉特效、滤镜以及音频编辑功能&am…...
3分钟上手!BilibiliDown:免费开源B站视频下载工具终极指南
3分钟上手!BilibiliDown:免费开源B站视频下载工具终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.c…...
Appium 2.10.1环境搭建实战:JDK21+Android SDK34全链路排障指南
1. 这不是“装个软件”——Appium最新版环境搭建的真实水深 很多人点开“Appium环境搭建”教程,以为就是下载几个安装包、点几下下一步,顶多配个PATH变量就完事了。我去年带三个新人做自动化测试时,也这么想。结果光是让一台干净的Windows 1…...
告别繁琐配置!OpenClaw 一键脚本,轻松搞定本地 AI 自动化
OpenClaw(小龙虾)Windows 一键部署保姆级教程 | 10 分钟养出你的数字员工(2026 最新版) 前言 2026 年热门的开源 AI 智能体 OpenClaw(昵称小龙虾),GitHub 星标超 28 万,凭借本地运…...
qmc-decoder深度解析:高效解密QQ音乐加密格式的技术架构与实践
qmc-decoder深度解析:高效解密QQ音乐加密格式的技术架构与实践 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 在数字音乐版权保护的背景下,QQ音乐采…...
3步掌握终极AMD Ryzen调试工具:免费解锁硬件深层控制
3步掌握终极AMD Ryzen调试工具:免费解锁硬件深层控制 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…...
生产级MLOps鲁棒性实战:从数据漂移到模型监控的五大平台对比
1. 项目概述:为什么生产级机器学习系统必须关注鲁棒性? 在机器学习项目从实验室走向生产环境的漫长旅途中,我们常常会经历一个“高开低走”的尴尬局面:在精心准备的测试集上表现优异的模型,一旦部署上线,性…...
