112.路径总和

在这里插入图片描述

// 定义一个名为 Solution 的类
class Solution {

   // 定义一个名为 hasPathSum 的公共方法,接收一个 TreeNode 类型的根节点 root 和一个整数 targetSum 作为参数
   // 方法返回一个布尔值,表示从根节点开始是否存在一条路径,使得路径上所有节点的值之和等于给定的目标值 targetSum
   public boolean hasPathSum(TreeNode root, int targetSum) {

       // 基本终止条件:如果根节点为空,那么不存在这样的路径,直接返回 false
       if(root == null){
           return false;
       }

       // 更新目标值:从当前节点的值中减去目标和
       targetSum -= root.val;

       // 特殊情况:如果当前节点是一个叶子节点(即左右子节点都为空),则检查此时的目标值是否为 0,
       // 若为 0,说明找到了一条从根节点到叶子节点、路径和为目标值的路径,返回 true
       if(root.left == null && root.right == null){
           return targetSum == 0;
       }

       // 递归遍历左子树
       if(root.left != null){
           // 调用自身方法查找左子树中是否存在满足条件的路径
           boolean left = hasPathSum(root.left, targetSum);

           // 如果在左子树中找到了满足条件的路径,则直接返回 true
           if(left){
               return true;
           }
       }

       // 递归遍历右子树
       if(root.right != null){
           // 调用自身方法查找右子树中是否存在满足条件的路径
           boolean right = hasPathSum(root.right, targetSum);

           // 如果在右子树中找到了满足条件的路径,则直接返回 true
           if(right){
               return true;
           }
       }

       // 如果左右子树都没有找到满足条件的路径,则返回 false
       return false;
   }
}

这个方法采用递归的方式遍历二叉树,对每一个节点,首先检查它是否为叶子节点(左右子节点均为空),如果是且路径和恰好等于目标值,就返回 true;否则,分别递归地在其左子树和右子树中查找是否存在满足条件的路径。最后,如果在左右子树中都没有找到满足条件的路径,则返回 false。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

给nginx部署https及自签名ssl证书

一、生成服务器root证书 openssl genrsa -out root.key 2048 openssl req -new -key root.key -out root.csr#Country Name (2 letter code) [XX]:---> CN#Country Name (2 letter code) [XX]:---> CN#State or Province Name (full name) []:---> Shanghai#Locality…

数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

字符串匹配——烦人的KMP

相信很多同学看到这篇文章的时候,已经被KMP拿捏了吧!KMP算法说难,倒也不是很难,手算都会,说不难吧,短短几行代码愣是看不懂,辗转反侧,翻书查阅,视频讲解,最后…

基于pytorch实现手写数字识别

1,先安装pytorch,在pytorch环境中安装库: 1)进入所安装的pytorch环境,我的是pytorch 所以激活它: conda activate pytorch 2)使用pip安装numpy,torch,torchvision,matplotlib库 pip instal…

【MDVRP多站点物流配送车辆路径规划问题(带容量限制)】基于遗传算法GA求解

课题名称:基于遗传算法求解带容量限制的多站点的物流配送路径问题MDVRP 版本时间:2023-03-12 代码获取方式:QQ:491052175 或者 私聊博主获取 模型描述: 15个城市中,其中北京,长沙和杭州三座…

Android 多桌面图标启动, 爬坑点击打开不同页面

备注 : MainActivity 正常带界面的UI MainActivityBt 和 MainActivityUsb 是透明的,即 android:theme"style/TranslucentTheme" ###场景1:只有MainActivity 设置成:android:launchMode"singleTask" 点击顺序&#xff1…

02-pycharm详细安装教程(大妈看了都会)

目录 1.官方下载pycharm 2.开始安装pycharm 3.开始运行pycharm 1.官方下载pycharm 官方:https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows 提示:安装pycharm之前建议先安装python,因为pycharm要基于python环境才能运…

azure devops工具实践分析

对azure devops此工具的功能深挖,结合jira的使用经验的分析 1、在backlog的功能描述,可理解为需求项,这里包括了bug,从开发的角度修复bug也是个工作项,所以需求的范围是真正的需求(开发接收到的已经确认的…

二叉树的前序后序中序层序

文章目录 一、二叉树的前序遍历二、二叉树的中序三、后序四、层序 引言:首先我们讲一下什么是二叉树的前序中序后序层序 前序:从 根 左子树 右子树访问 中序:从 左子树 根 右子树访问 后序:从 左子树 右子树 根访问 等到根为空的…

java面试题(spring框架篇)(黑马 )

树形图: 一、Spring框架种的单例bean是线程安全吗? Service Scope("singleton") public class UserServiceImpl implements UserService{ } singleton:bean在每个Spring IOC容器中只有一个实例 protype:一个bean的定义可以有多个…

使用 Grafana 使用JSON API 请求本地接口 报错 bad gateway(502)解决

一 . 问题: 在用docker部署Grafana 来实现仪表盘的展示,使用到比较多的就是使用JAON API插件调用本地部署的API,比如访问localhost下的 /test_data 接口,一般我们使用的是http://localhost:8080/test_data, 但是在访…

Python测试框架pytest介绍用法

1、介绍 pytest是python的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高 pip install -U pytest 特点: 1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 2.支持简单的单…

计算机网络-第2章 物理层

本章内容:物理层和数据通信的概念、传输媒体特点(不属于物理层)、信道复用、数字传输系统、宽带接入 2.1-2.2 物理层和数据通信的概念 物理层解决的问题:如何在传输媒体上传输数据比特流,屏蔽掉传输媒体和通信手段的差…

Java学习27--IDEA常用快捷键

智能显示相关提示:altenter,用来快速生成Scanner,或者new object等等,也可以爆红线求提示 代码模板大全ctrlj 可以快速生成try catch finally模块的surround with:ctrlaltt(我换成了altc) 生成getter/setter/构造器等结构-genera…

武器大师——操作符详解(下)

目录 六、单目操作符 七、逗号表达式 八、下标引用以及函数调用 8.1.下标引用 8.2.函数调用 九、结构体 9.1.结构体 9.1.1结构的声明 9.1.2结构体的定义和初始化 9.2.结构成员访问操作符 9.2.1直接访问 9.2.2间接访问 十、操作符的属性 10.1.优先性 10.2.结合性 …

【MySQL】SQL 优化

MySQL - SQL 优化 1. 在 MySQL 中,如何定位慢查询? 1.1 发现慢查询 现象:页面加载过慢、接口压力测试响应时间过长(超过 1s) 可能出现慢查询的场景: 聚合查询多表查询表数据过大查询深度分页查询 1.2 通…

2023 版王道单科书勘误汇总(3.30)

注:因2023版对题目编号做了优化“历年真题全部放最后、且按年份排序”,以方便大家根据需要保留某些年份的真题作为最后的模拟。所以造成了一些题目和解析的编号错误。 数据结构: P11 P20 P56 P278 P326 “2.”中第 3 行”题 5改成”9”,第6行”题 8”改成…

线性表——单链表的增删查改

本节复习链表的增删查改 首先, 链表不是连续的, 而是通过指针联系起来的。 如图: 这四个节点不是连续的内存空间, 但是彼此之间使用了一个指针来连接。 这就是链表。 现在我们来实现链表的增删查改。 目录 单链表的全部接口…

【EAI 027】Learning Interactive Real-World Simulators

Paper Card 论文标题:Learning Interactive Real-World Simulators 论文作者:Mengjiao Yang, Yilun Du, Kamyar Ghasemipour, Jonathan Tompson, Leslie Kaelbling, Dale Schuurmans, Pieter Abbeel 作者单位:UC Berkeley, Google DeepMind, …

探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并且坚持默默的做事。 备忘录模式揭秘-实现时光回溯、一键还原、后悔药和穿越时空隧道 文章目录 一、案例场景&…
最新文章