*python3__leecode/0112. 路径总和

重回童年的经典系列☀️|【炸弹人小游戏】制作过程+解析 | 收藏起来跟曾经的小伙伴一起梦回童年! Unity,小游戏开发。 本篇文章对童年经典小游戏——炸弹超人进行制作和解析。不知道有没有勾起你童年的回忆呢!快来和我一起制作这个童年经典的小游戏吧! 敬请品尝! 阅读详情

一、刷题方法

原题链接

https://leetcode-cn.com/problems/path-sum/

内容描述

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。

叶子节点 是指没有子节点的节点。

示例 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

示例 3:
输入:root = [1,2], targetSum = 0
输出:false

提示:
树中节点的数目在范围 [0, 5000] 内
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000

二、解题方法

1.方法一:广度优先搜索

使用两个队列,分别存储将要遍历的节点,以及根节点到这些节点的路径和即可。

class Solution:
    def hasPathSum(self, root: TreeNode, targetSum: int) -> bool:
        if not root:
            return False
        que_node = collections.deque([root])
        que_val = collections.deque([root.val])
        while que_node:
            now = que_node.popleft()
            temp = que_val.popleft()
            if not now.left and not now.right:
                if temp == targetSum:
                    return True
                continue
            if now.left:
                que_node.append(now.left)
                que_val.append(now.left.val + temp)
            if now.right:
                que_node.append(now.right)
                que_val.append(now.right.val + temp)
        return False

时间复杂度:O(N),其中 N 是树的节点数。对每个节点访问一次。
空间复杂度:O(N),其中 N 是树的节点数。空间复杂度主要取决于队列的开销,队列中的元素个数不会超过树的节点数。

2.方法二:递归

观察要求我们完成的函数,我们可以归纳出它的功能:询问是否存在从当前节点 root 到叶子节点的路径,满足其路径和为 sum。

假定从根节点到当前节点的值之和为 val,我们可以将这个大问题转化为一个小问题:是否存在从当前节点的子节点到叶子的路径,满足其路径和为 sum - val。

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

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def hasPathSum(self, root: TreeNode, targetSum: int) -> bool:
        if not root:
            return False
        if not root.left and not root.right:
            return targetSum == root.val
        return self.hasPathSum(root.left, targetSum-root.val) or self.hasPathSum(root.right, targetSum-root.val)

时间复杂度:O(N),其中 N 是树的节点数。对每个节点访问一次。
空间复杂度:O(H),其中 H 是树的高度。空间复杂度主要取决于递归时栈空间的开销,最坏情况下,树呈现链状,空间复杂度为 O(N)。平均情况下树的高度与节点数的对数正相关,空间复杂度为 O(logN)。

Python爬虫实战:使用最新技术抓取采购网招标公告信息 本文将详细介绍如何使用Python最新爬虫技术构建一个高效的采购网招标公告信息抓取系统。我们将从爬虫基础概念讲起,逐步深入到高级技巧,包括异步处理、反爬虫对策、数据解析与存储等,并提供完整的代码实现。本文旨在为读者提供一套完整的网络数据采集解决方案,适用于各类政府采购平台和商业招标网站。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序或脚本,它们按照一定的规则,自动地浏览万维网并提取所需数据。在现代商业环境中,爬虫技术广泛应用于价格监控、竞争情报收集、市场研究等领域。 阅读详情

相关推荐

用MFRC522+STM32打造智能门禁:从硬件选型到云端控制全流程

本文详细介绍了基于STM32微控制器和MFRC522射频模块构建智能门禁系统的完整流程。从硬件选型、电路设计、底层驱动开发,到系统软件架构与状态机设计,并最终实现通过ESP8266模块接入云端平台(如OneNET)进行远程控制和数据可视化。项目深入探讨了MFRC522的SPI通信、卡片操作流程、天线调试以及云端MQTT集成等关键技术,为嵌入式开发者提供了一个从本地感知到云端管控的物联网项目实战参考。

raspberrypi5的博客 741

Leetcode112. 路径总和

Every day a leetcode 题目来源:112. 路径总和 解法1:递归 hasPathSum 函数:询问是否存在从当前节点 root 到叶子节点的路径,满足其路径和为 sum。 假定从根节点到当前节点的值之和为 val,我们可以将这个大问题转化为一个小问题:是否存在从当前节点的子节点到叶子的路径,满足其路径和为 targetSum - val。 于是,这个问题可以用递归实现。 退出条件:走到了空结点 当遇到叶子节点时,判断该值是否等于剩余的targetSum。是,返回 true,不是返回 fa

ProgramNovice的博客 1471

VMware Workstation Pro 17 最新破解版安装教程(附永久激活密钥)

本文详细介绍了VMware Workstation Pro 17专业版的安装与配置指南,包括系统要求检查、官方版本安装流程、高级配置优化及常见问题排查。通过合规使用官方版本,开发者可以充分利用其强大的虚拟化能力,提升多平台开发与测试效率。

weixin_29327977的博客 3559

关于递归在求解路经和中的应用

觉得递归其实就是数学归纳法的逆运算。 做递归相关的题目时,有三点: 第一:明确要递归的函数要实现的功能,一定要相信这个函数可以完成任务; 第二:不要去考虑细枝末节和它时如何实现的,只考虑当前。 第三:找好终止条件; 下面我们来做路径总和的三道题: 112. 路径总和 这个题目是判断从根到叶子节点的路径和是否等于一个数。首先我们hasPathSum(root,sum)这个函数的作用是找出以root为根的树的路径和等于sum的个数,我们相信它可以实现。接下来找终止条件如果root是叶子节点的话,那

xdbzdgx的博客 294

鸿蒙OS+UniApp文件上传实战:如何解决大文件分片上传的3大坑?

本文深入探讨鸿蒙OS与UniApp结合实现大文件分片上传的实战方案,重点解决分片策略设计、网络中断处理和进度管理三大技术难题。通过鸿蒙分布式特性与UniApp跨平台能力的结合,提供动态分片调整、断点续传和跨设备进度同步等优化方案,显著提升大文件上传成功率和用户体验。

weixin_29250403的博客 474

AI驱动的数据完整性:ECC到S/4HANA迁移

在SAP ECC到S/4HANA的迁移过程中,数据完整性验证是最复杂且关键的挑战之一。本文介绍了一个全面的AI驱动的端到端数据完整性框架,用于对账事务数据并验证数百万条主数据记录和事务记录的完整性。该框架结合了模式映射、自然语言提示到SQL生成、基于LLM的解决方案、大规模数据对账的数据完整性工具、基于云的测试数据管理以及实时Power BI仪表板,为开发者提供了一个可重复、可扩展的工作流程,确保ERP迁移过程中的数据质量。

简简单单Onlinezuozuo 1173

[112].路径总和

路径总和题目函数原型边界判断算法设计:递归   题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ .

Debroon 471

BOE CHPI协议解析:高速显示驱动的核心技术

本文深入解析了BOE CHPI协议,这是一种为高分辨率、高刷新率显示面板设计的时钟嵌入式高速点对点接口技术。文章详细阐述了其三层架构(物理层、链路层、协议层)、核心机制(如链路训练与BCC通道)以及如何通过高速串行差分传输解决大尺寸屏幕内部数据传输的带宽与干扰难题,是驱动8K、窄边框等高端显示应用的关键核心技术。

m9n0o的博客 544

LeetCode每日一题:路径总和

题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明:叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4...

Lin_Willen的博客 280

Jmeter压测报告

账户分析压测报告 一、测试内容 本次测试是针对账户分析进行的压力测试,在账户分析查询接口中,只对用户资产查询接口进行压力测试,其中不包含用户签名校验功能。 二、测试方法 本次采用apache的开源测试工具jmeter,采用本地动态拼装请求数据并通过http协议GET方式发送每日盈亏查询请求。并采用1000个用户账号测试访问情况。...

qq_31108731的博客 6627

Silvaco TCAD实战 | SiC MOSFET工艺仿真与关键参数DOE分析

本文详细介绍了使用Silvaco TCAD进行SiC MOSFET工艺仿真与关键参数DOE分析的实战方法。通过外延生长建模、离子注入工艺调试等步骤,结合DOE分析优化器件性能,帮助工程师在设计阶段预判电学特性,提升产品可靠性。文章还分享了网格划分、界面态建模等实用技巧,助力实现从仿真到产品的闭环验证。

weixin_30235225的博客 507

Path Sum路径总和系列总结 leetcode

Path Sum 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...

qq_26410101的博客 2089

python基础之语言发展历史

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。 目录一、前言二、发展历史1、Python是一种面向对象的解释型编程语言2、Python常被称为胶水语言3、Python由Guido开发4、Python连续多年入选编程语言TOP105、Python的发展历史三、总结 一、前言   由于Python语言的简洁性、易读性以及可扩展性,它在网络爬虫、数据分析、.

jiankang66的博客 3348

力扣LeetCode #112 路径总和(HasPathSum)

- 题目描述 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 提示: 叶子节点 是指没有子节点的节点。 树中节点的数目在范围 [0, 5000] 内 -1000 <= Node.val <= 1000 -1000 <= targetSum <= 1000 来源:LeetCode - 示例 示例 1: 输入:root = [5,4,8,11,nul

weixin_49155948的博客 617

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode第112题:路径总和

题目: 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。 路径和概念: 每一条路径都是从根节点开始,直至叶子节点。这条路径上经过的所有节点值得累加和,即一条二叉树路径和。 思路: 总体思路:使用递归,遍历整棵树,直至叶子结点,并记录路径和。再与目标进行比较。 具体思路: 1、如果当前节点有左子树,将当前节点值加入到路径和中。并递归其左子树,计算路径

biglxl的博客 679

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

二叉树14 .路径总和 冲鸭冲

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22 输出:true 解: 如果需要搜索整颗⼆叉树,那么递归函数就不要返回值,如果要搜索其中⼀条符合条件的路径,递归函数就需要返回值,因为遇到符合条件的路径了就要

qq_39912781的博客 131

Python计算二叉树路径总和(遍历、迭代)

给你二叉树的根节点root 和一个表示目标和的整数targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。 叶子节点 是指没有子节点的节点。 示例 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 示例 3: 输入...

whuzhang16的博客 1103

*python3__leecode/2049. 统计最高分的节点数目

2049. 统计最高分的节点数目一、刷题内容原题链接内容描述二、解题方法 一、刷题内容 原题链接 https://leetcode-cn.com/problems/count-nodes-with-the-highest-score/ 内容描述 给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于节点 0 是根,所以 parents[0] == -

weixin_43846708的博客 701

*python3__leecode/0240. 搜索二维矩阵 II

240. 搜索二维矩阵 II一、刷题内容原题链接内容描述二、解题方法1.方法一:暴力法2.方法二:二分法搜索3.方法三:搜索空间的缩减4.方法四: 一、刷题内容 原题链接 https://leetcode-cn.com/problems/search-a-2d-matrix-ii/ 内容描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix = [[1,

weixin_43846708的博客 415

*python3__leecode/1743. 从相邻元素对还原数组

1743. restore the array from adjacent pairs 从相邻元素对还原数组一、刷题内容原题链接内容描述二、解题方法1.方法一:单向构造(哈希表计数)2.方法二:双向构造(双指针) 一、刷题内容 原题链接 https://leetcode-cn.com/problems/restore-the-array-from-adjacent-pairs/ 内容描述 存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。好在你还记得 nums 中的每一对相邻元素

weixin_43846708的博客 385

*Mysql__leecode/0601. 体育馆的人流量

601. human traffic of stadium 体育馆的人流量一、刷题内容原题链接内容描述二、解题方法方法一:使用 JOIN 和 WHERE 子句 一、刷题内容 原题链接 https://leetcode-cn.com/problems/human-traffic-of-stadium/ 内容描述 SQL架构 表:Stadium +---------------+---------+ | Column Name | Type | +---------------+---------+

weixin_43846708的博客 383

*python3__leecode/2055. 蜡烛之间的盘子

2055. 蜡烛之间的盘子一、刷题内容原题链接内容描述二、解题方法 一、刷题内容 原题链接 https://leetcode-cn.com/problems/plates-between-candles/ 内容描述 给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0 开始的字符串 s ,它只包含字符 '*' 和 '|' ,其中 '*' 表示一个 盘子 ,'|' 表示一支 蜡烛 。 同时给你一个下标从 0 开始的二维整数数组 queries ,其中 queries[i] = [lefti, rig

weixin_43846708的博客 378

*python3__leecode/0401.二进制手表

401. binary watch 二进制手表一、刷题内容原题链接内容描述二、解题方法1.方法一:遍历法 一、刷题内容 原题链接 https://leetcode-cn.com/problems/binary-watch/ 内容描述 二进制手表 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,下面的二进制手表读取 “3:25” 。 给你一个整数 turnedOn ,表示当前亮着的 LED

weixin_43846708的博客 352

*python3__leecode/0144. 二叉树的前序遍历

144. binary tree preorder traversal 二叉树的前序遍历一、刷题内容原题链接内容描述二、解题方法1.方法一:递归2.方法二:迭代3.方法三:Morris 遍历 一、刷题内容 原题链接 https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ 内容描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2:

weixin_43846708的博客 345

*python3__leecode/0415. 字符串相加

415. add strings 字符串相加一、刷题内容原题链接内容描述二、解题方法1.方法一:双指针 一、刷题内容 原题链接 https://leetcode-cn.com/problems/add-strings/ 内容描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 提示: num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串

weixin_43846708的博客 292

*python3__leecode/0701. 二叉搜索树中的插入操作

701. insert into a binary search tree 二叉搜索树中的插入操作一、刷题内容原题链接内容描述二、解题方法1.方法一:模拟 一、刷题内容 原题链接 https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/ 内容描述 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效

weixin_43846708的博客 274

*python3__leecode/0101.对称二叉树

101.symmetric tree 对称二叉树一、刷题内容原题链接内容描述二、解题方法1.方法一:递归2.方法二:递归3.方法三:递归 一、刷题内容 原题链接 https://leetcode-cn.com/problems/symmetric-tree/ 内容描述 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,nu

weixin_43846708的博客 261
上一篇: python3__leecode/0226. 翻转二叉树
下一篇: *python3__leecode/0701. 二叉搜索树中的插入操作
百里 Jess
博客等级 码龄8年 3999粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里 Jess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值