路径总和(递归)

112. 路径总和 - 力扣(LeetCode)

题目描述

给你二叉树的根节点 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

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool backing(TreeNode* root,int& targetSum,int curSum){curSum+=root->val;if(!root->left && !root->right){if(curSum==targetSum) return true;else return false;}bool leftPath=false,rightPath=false;if(root->left)leftPath=backing(root->left,targetSum,curSum);if(root->right)rightPath=backing(root->right,targetSum,curSum);return  leftPath||rightPath;}bool hasPathSum(TreeNode* root, int targetSum) {if(!root) return false;return backing(root,targetSum,0);}
};

解2

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool backing(TreeNode* root,int cursum){if(!root->left && !root->right && cursum==0) return true;if(!root->left && !root->right) return false;if(root->left){if(backing(root->left,cursum-root->left->val))return true;}if(root->right){if(backing(root->right,cursum-root->right->val))return true;}return false;}bool hasPathSum(TreeNode* root, int targetSum) {if(!root) return false;return backing(root,targetSum-root->val);}
};

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

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

相关文章

Kotlin学习笔记1

数组 /*** 何时使用数组*/ fun useDemo() {// Kotlin 中最常见的数组类型是对象类型数组&#xff0c;由 Array 类表示。// 如果在对象类型数组中使用原生类型&#xff0c;那么会对性能产生影响&#xff0c;因为原生值都装箱成了对象。 为了避免装箱开销&#xff0c;请改用原生…

Llama2-Chinese-7b-Chat安装部署

文章目录 前言一、文件介绍 &#x1f4c1;二、环境配置 ♟三、Llama2-Chinese-7b-Chat下载 ⏬总结 前言 本文主要介绍如何使用Llama2-Chinese-7b-Chat&#xff0c;最后的效果如图所示&#xff1a; 一、文件介绍 &#x1f4c1; ⬇️ 下载地址&#xff1a;https://pan.baidu.…

如何实现nacos的配置的热更新

我们在使用nacos进行修改配置后&#xff0c;需要微服务无需重启即可让配置生效&#xff0c;也就是使配置进行热更新我们可以采用下面的两种方式进行配置的热更新操作 方式一&#xff1a;在Value所注入的变量的类上添加注解RefreshScope RestController RequestMapping("/o…

Linux基本操作指令

哈喽小伙伴们&#xff0c;从这篇文章开始&#xff0c;在学习数据结构的同时&#xff0c;我们开启一个新的篇章——Linux操作系统的学习&#xff0c;这将会是又一个新的开始&#xff0c;希望小伙伴们能够认真细心&#xff0c;不要掉队哦。 目录 一.什么是Linux 二.为什么要学习…

git 相关操作说明

1.先下载git相关软件 下载地址&#xff1a; https://git-scm.com/download/win下载其中一个安装 2.打开gitee网站&#xff0c;注册账号 3.打开个人中心&#xff0c;选择ssh公钥&#xff0c;查看如何生成公钥 4.生成公钥后&#xff0c;添加相应的公钥 具体仓库操作 1.第一…

【Android】完美解决Cannot resolve method ‘subscribe(Observer<T>)‘

问题截图&#xff1a; 解决方法&#xff1a; 如上图&#xff0c;看我标123的三个地方&#xff0c;2标注的地方提示我们我方法实际返回的值是Observer<Res_GetCellCode>,而我想要返回的结果是&#xff1a;3标记的结果&#xff1a;Observer<Res_QueryCTInfo>&#xf…

Vue mixins详解

文章目录 前言Vue中的mixins详解什么是mixins简单例子mixins的特点mixins与vuex的区别mixins与公共组件的区别前言 在Vue中,mixins是一种可重用的代码片段,可以在多个组件中共享。它可以包含组件的选项,如data、methods、computed等,以及生命周期钩子函数。 本文将详细介…

git拉取代码冲突处理

参考文章&#xff1a;https://www.jianshu.com/p/b74ee1f4135f 问题&#xff1a; 因为git commit前没有git pull同步远程分支的代码&#xff0c;所以push会发生错误 解决办法&#xff1a; 1、可以使用git reset --hard HEAD^来回退到上一次commit的状态。此命令可以用来回退到…

智能优化算法应用:基于引力搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于引力搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于引力搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.引力搜索算法4.实验参数设定5.算法结果6.…

《C++新经典设计模式》之第4章 策略模式

《C新经典设计模式》之第4章 策略模式 策略模式.cpp 策略模式.cpp #include <iostream> #include <memory> using namespace std;// if或switch分支不稳定&#xff0c;经常改动时&#xff0c;考虑引入算法独立到策略类中去实现// 依赖倒置原则 // 高层组件不应该依…

AI日报:苹果为使用Mac的人工智能开发者推出开源工具

文章目录 总览主要介绍开发理念开发细节MLX功能用途 MLX可以用于商业软件吗&#xff1f; 总览 苹果正在为开发人员提供新的工具&#xff0c;用于在其硬件上训练和运行大型语言模型。 主要介绍 开发理念 苹果公司通过发布一系列新的开源人工智能工具&#xff0c;向开源人工智能…

关于“Python”的核心知识点整理大全17

目录 ​编辑 8.3.4 结合使用函数和 while 循环 greeter.py 8.4 传递列表 greet_users.py 8.4.1 在函数中修改列表 printing_models.py 8.4.2 禁止函数修改列表 要将列表的副本传递给函数&#xff0c;可以像下面这样做&#xff1a; 往期快速传送门&#x1f446;&#x…

扫盲运动—字节序

1 大端、小端字节序 术语“大端”和“小端”表示多个字节值的哪一端&#xff08;小端或大端&#xff09;存储在该值的起始地址。 大端&#xff1a;将高序字节存储在起始地址&#xff0c;这称为大端&#xff08;big-endian&#xff09;字节序小端&#xff1a;将低序字节存储在…

GC6609,GC6610超静音的两相步进电机驱动芯片的性能分析

两相步进电机驱动芯片GC6609&#xff0c;GC6610它们是一款超静音的两相步进电机驱动芯片&#xff0c;内置最大 256 细分的步进驱动模式&#xff0c; 超静音&#xff0c;低振动。芯片可以工作在 4~36V 的宽工作电压范围内&#xff0c;平均工作电流可以达到 2A和2.5A &#xff0c…

08 计算相机运动

文章目录 08 计算相机运动8.1 提取特征点8.2 对极几何8.2.1 几个矩阵8.2.2 相机坐标系与归一化坐标系8.2.3 三角测量 8.3 PnP: 3D-2D8.4 ICP&#xff1a;3D-3D8.5 总结 08 计算相机运动 8.1 提取特征点 读取图像 --> 提取角点 --> 计算各角点的描述子 --> 匹配描述子…

RHEL防火墙配置

目录 1.了解firewalld 2.firewalld的基本配置 3.配置firewalld的规则 4.icmp-blocks 5.Services 6.ports 1.了解firewalld 在RHEL8中用的防火墙是firewalld&#xff0c;在 firewalld中又涉及zone的概念。首先来了解一下什么是zone 如在进地铁或高铁时需要安检&#xf…

JavaEE07 定时器的使用和模拟实现

前言 前面我们聊了很多关于阻塞队列,单例模式等的应用,今天我们就来聊聊定时器的功能和模拟实现,其实定时器的实现在我们的日常生活中也很常见,比如说平常创建一些定时任务,定时开关机,定时去发表一篇qq空间等等,今天我们就来简单实现一个定时器. 1.JVM提供的定时器的使用 在自…

现代雷达车载应用——第2章 汽车雷达系统原理 2.3节

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.3 信号模型 雷达的发射机通常发出精心设计和定义明确的信号。然而&#xff0c;接收到的返回信号是多个分量的叠加&#xff0c;包括目标的反射、杂波…

usr/bin/env: ‘bash\r‘: No such file or directory

执行docker报错 这种错误是由于windows下执行linux的shell文件&#xff0c;格式不对导致 去ubuntu下安装dos2unix sudo apt-get install dos2unix 切换到对应的目录下&#xff0c;对shell文件进行格式化 dos2unix xxx.sh

数字化转型对企业有什么好处?

引言 数字化转型已经成为当今商业领域中的一股强大力量&#xff0c;它不仅仅是简单的技术更新&#xff0c;更是企业发展的重要战略转变。随着科技的迅猛发展和全球化竞争的加剧&#xff0c;企业们正在积极探索如何将数字化的力量融入到他们的运营和战略中。 数字化转型不仅是传…