LeetCode_二叉树_简单_112.路径总和

目录

  • 1.题目
  • 2.思路
  • 3.代码实现(Java)

1.题目

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/path-sum

2.思路

(1)递归
观察要求我们完成的函数,我们可以归纳出它的功能:询问是否存在从当前节点 root 到叶子节点的路径,满足其路径和为 sum。假定从根节点到当前节点的值之和为 val,我们可以将这个大问题转化为一个小问题:是否存在从当前节点的子节点到叶子的路径,满足其路径和为 sum - val

不难发现这满足递归的性质,若当前节点就是叶子节点,那么我们直接判断 sum 是否等于 val 即可(因为路径和已经确定,就是当前节点的值,我们只需要判断该路径和是否满足条件)。若当前节点不是叶子节点,我们只需要递归地询问它的子节点是否能满足条件即可。

相关题目:
LeetCode_二叉树_中等_113.路径总和 II
LeetCode_二叉树_前缀和_中等_437.路径总和 III

3.代码实现(Java)

//思路1————递归
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) {
            return false;
        }
        if (root.left == null && root.right == null) {
            return sum == root.val;
        }
        return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
    }
}

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

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

相关文章

【学习笔记】低速数字输入电路

1、方案设计&#xff1a;单通道、单向、反相器 该电路采用单通道&#xff0c;单向光耦&#xff0c;只支持漏型输入&#xff0c;电路的输入端压差满足24V DC10%(21.6V DC-26.4V DC)&#xff0c;输出端电压在0~3.3V范围摆动。 1.1关键技术规格 1.2具体原理图 1.3电路原理详解 …

Java版本电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…

如何利用生产管理系统提高粉末治金工业的生产调度能力

在粉末冶金工业中&#xff0c;生产管理系统的应用已经成为了一个必不可少的部分。生产管理系统可以帮助企业实现自动化、信息化、智能化的生产&#xff0c;提高生产效率、降低生产成本、提高产品质量。生产管理系统可以对生产流程进行全面的监控和管理&#xff0c;从而实现生产…

Android还要继续学习吗?高薪高级开发领先位置占据一席之地

Android开发还有必要学习吗 &#xff1f; 我们来看Android从业大佬的回答&#xff1b;从回答中可以读取出一些信息&#xff0c;Android市场仍有岗位需求&#xff0c;只不过减少许多初级Android开发岗位。对于中高端市场还是面临着缺少人才&#xff1b;因为初级开发人员多啊&am…

Adobe Photoshop 2022版 功能介绍及使用技巧

目录 版本介绍&#xff1a; 使用技巧&#xff1a; 截图展示&#xff1a; 分享 版本介绍&#xff1a; Adobe Photoshop 2022是Adobe公司的一款专业的图像处理软件&#xff0c;它提供了强大的图像处理功能&#xff0c;从色彩调整&#xff0c;图层处理到高级合成等功能。新版…

AP3266 DC-DC大功率同步降压恒流芯片 过EMC三级 摩托电动汽车灯IC

1&#xff0c;产品描述 AP3266 是高效率、外围简单、内置功率管的同步降压恒流芯片&#xff0c;适用于4-40V输入的降压LED恒流驱动芯片。输出功率可达 40W&#xff0c;电流3.6A。AP3266 可通过调节 OVP 端口的分压电阻&#xff0c;设定输出空载电压 保护&#xff0c;避免高压 空…

Jmeter和Postman那个工具更适合做接口测试?

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人在做的接口测试&#xff0c;小白变高手…

基于梯度提升决策树的组合特征方法,《百面机器学习》学习笔记

《百面机器学习》学习笔记&#xff1a;基于梯度提升决策树的组合特征方法 基于梯度提升决策树的组合特征方法梯度提升决策树这里举一个例子来说明梯度提升决策树的思想方法为了更好地说明如何使用梯度提升决策树来实现对特征的组合&#xff0c;再举一个例子假设对于某种类型的输…

Nuxt学习笔记

创建项目 npx create-nuxt-app projectName SSR 渲染流程 客户端发送 URL 请求到服务端&#xff0c;服务端读取对应的 URL 的模板信息&#xff0c;在服务端做出 HTML 和数据的渲染&#xff0c;渲染完成之后返回整个 HTML 结构给客户端。所以用户在浏览首屏的时候速度会比较快…

物联网| 定时器计数器开发之中断方法|定时器中断处理函数|完整测试代码|物联网之蓝牙4.0 BLE基础-学习笔记(6)

文章目录 11 定时器计数器开发之中断方法定时器中断处理函数:完整测试代码&#xff1a; 11 定时器计数器开发之中断方法 LED控制电路同前节&#xff1a; CC2530的T3定时器(8位&#xff09;需要了解T3GJL,T3CCTLO,T3CCO,T3CCTL1,T3CC寄存器。如下表所示&#xff1a; 按照表格…

像素画板-第14届蓝桥杯省赛Scratch初级组真题第4题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第133讲。 像素画板&#xff0c;本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程初级组真题第4题&#xf…

从C出发 31 --- 指针专题经典问题剖析

int a 0; int* p &a; //p作为指针指向了a, p 保存的是a 变量的内存地址&#xff0c;// p 这个指针本质是变量&#xff0c;这个变量有没有内存地址&#xff1f;// 有内存地址&#xff0c;为什么&#xff1f;// 因为它作为变量&#xff0c;肯定要占用内存空间的// p 这个变…

Java EE 初阶---多线程(三)

五、阻塞队列 目录 五、阻塞队列 5.1 阻塞队列是什么 &#xff1f; 5.1.1 生产者消费者模型 ​编辑 5.1.2 标准库中的阻塞队列 5.1.3 消息队列 5.1.4 消息队列的作用 5.2 实现一个阻塞队列 虚假唤醒 六、线程池 6.1 线程池是什么&#xff1f; 6.2 怎么使用线程池&#xf…

多媒体基础

第九章、多媒体基础 1、多媒体技术基本概念 1.1、音频相关概念 超声波的频率通常在20千赫兹以上&#xff0c;无法被人类的耳朵听到&#xff0c;常用于医疗诊断、非破坏性材料测试、清洗、测量等领域 次声波的频率通常在20赫兹以下&#xff0c;同样无法被人类的耳朵听到&…

数据库缓存服务——NoSQL之Redis配置与优化

一、缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度&#xff0c;在中间对速度较慢的一方起到加速作用&#xff0c;比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据&#xff0c;内存是保存CPU经常访问硬盘的数据&#xff0c;而且硬盘也有大小不一的缓存…

11个超好用的SVG编辑工具

SVG的优势在于SVG图像可以更加灵活&#xff0c;自由收缩放大而不影响图片的质量&#xff0c;一个合适的SVG编辑工具能够让你的设计事半功倍&#xff0c;下面就一起来看看这些冷门软件好用在哪里。这11个超好用的SVG编辑工具依次为&#xff1a;即时设计、Justinmind、Sketsa SVG…

MATLAB绘制动画(二)擦除动画

如果我们在绘制图形之后将原有的图形擦除&#xff0c;并重新绘制&#xff0c;看上去就像动画了 示例: t 0; m [sin(t);cos(t)]; p plot(t,m,EraseMode,background,MarkerSize,5); x -1.5*pi; axis([x x2*pi -1.5 1.5]); grid onfor i 1:100t [t 0.1*i];m [m [sin(0.1*i…

BitKeep逆势崛起:千万用户的信任,终点还未到来

在全球范围内&#xff0c;BitKeep钱包如今已拥有超过千万忠实用户。 当我得知这一令人震撼的数字时&#xff0c;既感到惊讶&#xff0c;同时也觉得这是意料之中的事情。几年来关注BitKeep的发展历程&#xff0c;我深切地感受到了这家公司的蓬勃壮大。回顾2018年他们发布的第一个…

JVM 堆

堆的核心概述 一个 JVM 实例只存在一个堆内存&#xff0c;堆也是 Java 内存管理的核心区域Java 堆区在 JVM 启动的时候即被创建&#xff0c;其空间大小也就确定了。是 JVM 管理的最大一块内存空间堆可以处于物理上不连续的内存空间中&#xff0c;但是在逻辑上它应该被视为连续…

airserver7.2.7最新中文版下载及功能介绍

最近开会打算把手机投屏到自己的Mac上演示用&#xff0c;于是就打算用下听了很久好用但是一值没有使用的AirServer!十分简单的操作就可以完美的投屏到Mac电脑&#xff0c;而且不用像Mac自带的QuickTime用线连接手机!它可以把AirPlay / AirTunes上的音频、视频、照片、幻灯片还有…