【树-简单】112. 路径总和(重点)

力扣(LeetCode) 112: 路径总和 - 解法思路 给定一个二叉树的根节点root和一个整数targetSum,如果树中存在根到叶子的路径,使得路径上所有节点值的和等于targetSum,则返回true。叶子是指没有子节点的节点。从目标总和中减去当前节点的值,然后递归检查任一子树是否有剩余总和的路径。当到达叶子时,检查其值是否等于剩余目标总和。递归解决方案通常因其简单性和与树结构的自然匹配而更受欢迎。 阅读详情

【题目】
给你二叉树的根节点 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】
在这里插入图片描述

# 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:
        self.ans=[]
        self.visit(root,0)
        return targetSum in self.ans
    
    def visit(self,root,sum_all):
        if not root:
            return 0
        else:
            sum_all+=root.val
        if not root.left and not root.right:
            self.ans.append(sum_all)
            return sum_all
        self.visit(root.left,sum_all)
        self.visit(root.right,sum_all)

【递归2】清爽写法
在这里插入图片描述

class Solution:
    def hasPathSum(self, root: TreeNode, sum: int) -> bool:
        if not root:
            return False
        if not root.left and not root.right:
            return sum == root.val
        return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)

【迭代】
在这里插入图片描述

class Solution:
    def hasPathSum(self, root: TreeNode, sum: 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 == sum:
                    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
Vivado工程备份实战:两种方法快速迁移Block Design(附路径避坑指南) 本文详细介绍了Vivado工程中Block Design(BD)备份与迁移的两种核心方法:文件夹直接复制法与TCL脚本生成法。针对FPGA工程师在项目迁移或团队协作时常见的IP丢失、路径报错等问题,提供了从原理到实战的操作指南与路径避坑策略,确保设计可复现与高效协作。 阅读详情

相关推荐

企业华为TaurusDB数据库国产替代要点全记录

国产化数据库全方位对比、从互联网企业的先进经验来看mysql的用法、及sql优化、sql异构修改、及数据同步方面都做了一些讲解

深耕互联网的码农,在AI及国产化浪潮下,希望把自己的能力输出给更多的人 1064

LeetCode第112题—路径总和—Python实现

title: LeetCode No.112 categories: OJ LeetCode tags: Programing LeetCode OJ LeetCode第112题—路径总和 自己代码的开源仓库:click here 欢迎Star和Fork ???? 题目描述 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 示例

StriveZs'Blog 406

2024年捡垃圾指南:E5 V3/V4服务器CPU怎么选?从游戏多开到深度学习,附华南X99主板搭配清单

本文详细解析2024年E5 V3/V4服务器CPU的选购策略,涵盖游戏多开、深度学习等多种应用场景。通过对比E5 V3与V4系列的制程、功耗及性能差异,提供高性价比的CPU型号推荐及华南X99主板搭配方案,帮助用户在有限预算下打造高效能工作站。

weixin_42549451的博客 1593

LeetCode 112. 路径总和 | Python

使用递归、广度优先搜索的思路,解决《112. 路径总和》问题

"大梦三千秋的博客 977

脑机接口(BCI)从原理到开发实战 09|SSVEP应用:通过视觉刺激控制设备

本文介绍了稳态视觉诱发电位(SSVEP)脑机接口技术。SSVEP是一种高效的非侵入式BCI范式,当用户注视特定频率闪烁的视觉刺激时,大脑枕叶会产生对应的节律性响应。文章详细阐述了SSVEP的神经机制、刺激范式设计、数据预处理方法,重点讲解了典型相关分析(CCA)这一核心识别算法。相比运动想象和P300范式,SSVEP具有信息传输率高(60-100 bits/min)、信号稳定、无需训练等优势,在高速拼写、设备控制等领域应用广泛。文章还提供了完整的电极选择、滤波、分段等预处理流程,以及CCA和滤波器组CCA的

小明的博客 1358

制作Ubuntu22.04启动盘

现在越来越多程序代码都需要运行在linux环境下,运行这些代码的前提是安装一个稳定的linux操作系统。本文选择Ubuntu 22.04去制作系统启动盘。本文主要对ubuntu22.04的启动盘制作过程进行了详细的说明,希望能帮助到有需要的朋友。

lyx_ok的博客 1万+

每日一道算法题--leetcode 112--路径总和--python

【题目描述】 【代码思路】 在本题的基础上深化,可见我的下一篇:leetcode 113--路径总和II 做这道题首先想到的,就是遍历这棵树的所有根结点到叶结点的路径,将每条路径的和保存在一个list中,最后看list中是否含有题目给定的数据即可。遍历一棵树的所有路径,一定是要用到深度优先,写递归函数的,那么还是抓住一个点去看,就拿5这个结点来看,当递归函数输入的结点是5。 那么我首先是要去判断...

weixin_33809981的博客 223

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7925

[LeetCode]题解(python):112-Path Sum

题目来源:   https://leetcode.com/problems/path-sum/ 题意分析:   给出一个树和一个整数,判断这棵树是否有一条从根到叶节点的路径,使得路径之和为给定的整数。 题目思路:   这题还是用递归的思想。如果根节点的左右子树都为空,那么返回根的值是否等于sum,否者,sum 减去根的值得到一个newsum,判断newsum在左子树或...

weixin_34249678的博客 108

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

C#上位机实战:Modbus RTU串口通信(CRC校验+超时重发完整实现)

在工业自动化上位机开发中,Modbus RTU是串口通信的事实标准协议,SerialPort是 .NET 平台操作串口的原生类,无需依赖第三方库即可实现基础通信。实际项目中,工控现场存在电磁干扰、串口丢包、设备响应延迟等问题,CRC 数据校验用于保证报文完整性,超时重发机制用于提升通信稳定性。本文从零封装一套可直接落地的 Modbus RTU 通信组件,包含完整的校验算法、超时控制、重发逻辑,并配套 WinForm 演示界面。本文基于 C# 原生SerialPort类,实现了一套生产可用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 392

路径总和python(leetcode112)

路径总和python

ziqingnian的博客 706

中科大大数据学院2023年保研夏令营机试题目【无offer,直接放题了~】(2023.07.22下午14:35-17:35考试)

给定一串数字,最后一个数是0表示结尾,表示数字串的终止,为无效数字。将该数字串存储在双向链表中,判断是否为回文串,若是,则输出Yes,否则输出No.

m0_51339444的博客 1922

【必拿下系列】路径总和112&路径总和113

链接: 路径总和112直达地 链接: 路径总和II113直达地题目如下 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。 阅读题目所得:是需要求从头结点到叶子节点的所有路径中他们val的和是否有正好等于targetSum的存在 划重点:叶子节点和返回值boolean 思考如下:需要从头结点到叶

a6664566的博客 625

Camera2Demo

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

代码随想录算法训练营第18天(二叉树5 | 513 找树左下角的值 112. 路径总和 113. 路径总和ii 106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树

通过112. 路径总和和113. 路径总和ii要明确递归函数什么时候需要返回值,什么不需要返回值。如果需要搜索整棵二叉树且不用处理递归返回值,递归函数就不要返回值。113.路径总和ii如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值。236. 二叉树的最近公共祖先如果要搜索其中一条符合条件的路径,那么递归一定需要返回值,因为遇到符合条件的路径了就要及时返回。112.路径总和// 112// 递归+回溯// 易懂版本// 叶子节点// 左子树遍历= null){

weixin_46743838的博客 987

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

面试经典150题[076]:路径总和(LeetCode 112)

路径和问题存在性→ 递归 DFS 是首选,简单高效。核心是递归减法和叶子检查,很通用。可扩展到求所有路径(LeetCode 113)或最大路径和(LeetCode 124)。BFS 队列也可实现,但递归更简洁。

YoungHong1992 782

计算机控制技术及应用

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

算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

2402_84438596的博客 985

力扣解题-112. 路径总和

DFS递归法(第一次解答):O(n)时间+O(h)空间,逻辑简洁、易理解,是本题的基础最优解法;BFS迭代法:O(n)时间+O(n)空间,非递归、层级遍历,适合树高度较大的场景;递归精简版:代码更简洁,逻辑等价,可读性更高;DFS迭代版(栈模拟):O(n)时间+O(h)空间,非递归且空间效率与递归法一致;关键技巧核心思想:路径总和的本质是“根到叶子的路径遍历+剩余和校验”;终止条件:必须在叶子节点处校验剩余和,非叶子节点的空节点无意义;短路优化:递归/迭代中使用逻辑或||

qq_38261626的博客 313

LeetCode 112题:二叉树路径总和的DFS解法详解

深度优先搜索(DFS)是解决二叉树遍历问题的经典算法,特别适用于路径查找类问题。DFS通过递归或迭代方式系统地探索树结构,其核心原理是沿着分支深入到底再回溯。在算法面试中,路径总和问题考察了DFS的应用能力与边界条件处理技巧。实际工程中,类似算法可用于文件系统遍历、决策树分析等场景。本文以LeetCode 112题为例,详解如何通过DFS判断二叉树中是否存在特定和的路径,包含递归与迭代两种实现,并讨论负值节点处理等边界情况。掌握这类算法对提升树结构问题解决能力至关重要,也是应对大厂算法面试的基础技能。

weixin_34248705的博客 349

[LeetCode]112. 路径总和(java实现)

[LeetCode]112. (java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(): 3. 解法 ---------------------------------------------------解法---------------------------------------------------: 可能存在的问题: 4. 可能有帮助的前置习题 5. 所用

cloud的博客 937

路径总和系列(LeetCode 112 & 113 & 437 & 666)

本文介绍了路径总和系列四道题的解法,其中1和2比较简单直接DFS可以解决,3主要用到了前缀和,4就是构建树。路径总和3的做法,本质上和560题是一样的,有兴趣的读者可以看看。

氷泠 665

二叉树17:路径总和

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明:叶子节点是指没有子节点的节点。

Ge_yangwen的博客 688

零基础代码随想录【Day18】|| 513.找树左下角的值,112. 路径总和,106.从中序与后序遍历序列构造二叉树

那么如何找最左边的呢?可以使用前序遍历(当然中序,后序都可以,因为本题没有 中间节点的处理逻辑,只要左优先就行),保证优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值。参数:需要二叉树的根节点,还需要一个计数器,这个计数器用来计算二叉树的一条边之和是否正好是目标和,计数器为int型。给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)

Andrew______的博客 728

【代码随想录算法训练营Day18】● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍

优化思路:只定义一个int类型的res,for循环的第一个数就赋给res即可。用层序遍历,把每层第一个数加入一个新栈,返回栈顶即可。同113,只是返回值变为true和false。思路:找深度最大的叶子节点最左侧的节点。是否为0来确定是否是一条正确的路径。走到叶子节点通过判断。

Tammy2001的博客 873

代码随想录算法第十六天| LeetCode513找树左下角的值、LeetCode112路径总和、LeetCode106从中序与后序遍历序列构造二叉树

今天感冒了好难受啊,昨天剩下来的最后一题看了大概思路,今天早上写了两个多小时才把这道题逻辑大概搞懂了。还是得多练习,至于区间划分感觉还是不太好,进度是肝完了,不过今天还有新的作业不知道生病了能不能按时肝完呢,不要又落进度啦!

兑现自己能兑现的天赋吧 695

代码随想录算法训练营第十四天| 513.找树左下角的值,112.路径总和

1.明确题目的意思,最后要的结果是怎么得到的。2.确定二叉树怎么遍历,这个题目由于不处理中,所以前中后序均可。3.明确递归函数怎么写,递归三部曲。1.明确二叉树的遍历顺序,前中后序均可。2.递归三部曲,需要根据题意明确终止条件以及单层递归的逻辑。

2301_79571432的博客 608
上一篇: 【树-简单】1022. 从根到叶的二进制数之和(两种方法:递归、迭代)
下一篇: 【树-简单】104. 二叉树的最大深度
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值