【二叉树】力扣 112.路经总和

代码随想录算法训练营第13天--二叉树4 || 513.找树左下角的值 / 112.路经总和 113.路径总和ii / 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 本文介绍了LeetCode中关于二叉树路径和与构造二叉树的三个题目解法。513题通过递归法和迭代法寻找树的最底层最左节点值,递归法通过深度优先遍历,迭代法则采用层序遍历。112题使用回溯法判断是否存在路径和等于目标值,113题扩展为记录所有满足条件的路径。106题则通过拆分中序和后序遍历序列递归构造二叉树。这些题目展示了二叉树遍历、回溯和递归分治的典型应用,解题关键在于正确处理递归终止条件、回溯操作以及序列的拆分逻辑。 阅读详情

一、题目

在这里插入图片描述
在这里插入图片描述

二、思路

  • 如果根节点为空,则返回 false。
  • 如果根节点不为空,且为叶子节点,表明已经找到一条完整的路径,只需返回 root.val == targetSum。
    • 根节点不为叶子节点,继续往下搜索。由于已经搜索过 root 了,只需要检查路径上剩余节点的总和是否为 targetSum - root.val。所以先 targetSum -= root.val 再递归检查 hasPathSum(root.left, targetSum) hasPathSum(root.right, targetSum)。

三、代码

/**
 * 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 targetSum) {
        if (root == null) {
            return false;
        }
        if (root.left == null && root.right == null) {
            return root.val == targetSum;
        }
        targetSum -= root.val;
        return hasPathSum(root.left, targetSum) || hasPathSum(root.right, targetSum);
    }
}
leetcode112(路径总和) DFS+双栈常规题,题目如下 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ ... 阅读详情

相关推荐

LabVIEW多界面应用开发:从启动器到主界面的切换架构与实现

在图形化编程领域,模块化与界面管理是构建复杂应用程序的核心。其原理在于通过清晰的程序架构,实现不同功能模块间的独立运行与协同工作,从而提升代码的可维护性和可扩展性。这种架构的技术价值在于能够有效管理应用程序的生命周期与资源,避免内存泄漏,并确保流畅的用户体验。在测控系统、自动化测试等工程实践中,常需实现如启动界面选择语言或模式后,无缝切换至主功能界面的场景。本文聚焦于LabVIEW环境,深入探讨如何利用动态调用、状态机等机制,并结合功能全局变量(FGV)与队列消息处理器(QMH)等热词技术,构建健壮的多界面

weixin_30802819的博客 263

二叉树的路经总和——来自Leetcode112

二叉树的路经总和-来自Leetcode112路径总和,给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 路径总和,给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 来源:力扣(LeetCode) class So

m0_46228051的博客 392

airodump-ng、aircrack-ng使用教程

wifi破解、airodump-ng、aircrack-ng脚本

ssmbyss的博客 2231

leetcode111二叉树的最小深度 112路经总和

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 思路: 计算出从根节点到每个叶子节点的深度,通过比较维护min的值。 当前节点的最小节点为: min(左孩子最小深度, 右孩子最小深度)+1 注意:当左孩子或者右孩子不存在时的特殊情况。 /** *

qq_43128219的博客 272

手把手教你用SIMCOM A7670C_FASL模组实现双路MQTT连接阿里云(附完整源码)

本文详细介绍了如何使用SIMCOM A7670C_FASL 4G模组实现双路MQTT连接阿里云,包括硬件配置、开发环境搭建、双路MQTT架构设计及实现细节。通过完整的源码示例和实战指南,帮助开发者快速掌握物联网设备开发中的多路MQTT连接技术,提升工业级应用的开发效率。

weixin_33696822的博客 227

别再乱拖了!Godot 4.x 场景编辑器的7个隐藏操作技巧(附快捷键清单)

本文揭示了Godot 4.x场景编辑器的7个隐藏操作技巧,包括智能对齐、轴心点应用、多节点批量操作等,帮助开发者提升游戏开发效率。特别介绍了坐标系切换和自定义快捷键等实用功能,适用于处理复杂场景和团队协作。

weixin_29534421的博客 361

代码随想录算法训练营Day18|leetcode513 找树左下角的值、leetcode112 路经总和、leetcode106 从中序与后序遍历序列构造二叉树

题目链接思路:找左下角的值就是最后一行最左侧得值,也就是深度最大的最左边。代码逻辑为最大深度初始化为int的最小值,方便比较,定义一个result记录当前最大深度结点的值,depth记录当前遍历的深度。定义一个函数,如果走到了叶子节点,对比此时的深度和最大深度,如果此时深度更大就更新最大深度并更新result里面的值,然后分别递归左右节点,递归函数后面要进行回溯,因为找完一条路之后要回去找另外一条路。

weixin_48821824的博客 315

MQTT在智能家居中的实战:用Android手机控制ESP8266设备(基于EMQX)

本文详细介绍了如何利用MQTT协议构建一个完整的智能家居控制系统,通过Android手机App远程操控ESP8266设备。文章提供了从EMQX服务器部署、ESP8266端Arduino固件开发到Android客户端搭建的完整实战指南,并深入探讨了系统联调、稳定性优化与安全加固等关键环节,为物联网开发者提供了一套可复用的解决方案。

ujm567890的博客 457

代码随想录算法训练营第十六天 | LeetCode513找树左下角的值、112路经总和、113路径总和ⅱ、106从中序与后序遍历序列构造二叉树、105从前序与中序遍历序列构造二叉树

层序自带层次判断,只需要在最深层记录结果就可以,最左边可以通过迭代/递归的顺序指定,迭代法就是每一层的第一个i=0的时候记录,每一层记一次,后面的会覆盖前面的;注意找到最后路径后的add语句,需要new一个list,把path里的数据传进去,再把这个list加入res中,如果直接加入path的话因为是一个引用,后续回溯的话会修改已经存入的path,必须这样写。本来以为和前面的路径和差不多,但是这里的数据结构变成了List就有所不同,必须要回溯。的路径,这条路径上所有节点值相加等于目标和。

m0_57695537的博客 361

上位机介绍:C# 开发者的必知基础

上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验);

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

基于FFT的轴承故障诊断 - MATLAB代码和详细解释

最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。因此,通过分析频谱图,我们可以识别轴承故障的特征。因此,通过分析频谱图,我们可以识别轴承故障的特征。我们可以选择适当的阈值,并在频谱图上标记异常特征。通过这种基于FFT的轴承故障诊断方法,我们可以快速、准确地检测和诊断轴承故障。接下来,我们将应用FFT来获取振动信号的频谱信息,频谱显示了信号在不同频率上的能量分布。通过将异常特征标记在频谱图上,我们可以直观地识别轴承故障的存在。

COWizard的博客 613

数据结构与算法:二叉树相关力扣题python题解:404.左叶子之和、513.找树左下角的值、112.路经总和、106.从中序与后序遍历序列构造二叉树、654.最大二叉树、700、层序遍历构造二叉树

注意整型变量的值在python中是不可变的,所以这里用了列表效率:16ms,击败71.04%也可以不用列表,直接返回值之和。

shanshan的博客 593

通过Netlink检测网线插拔

Android/Linux通过netlink编程检测网线插拔。

阿xin*的嵌入式AI 1035

代码随想录笔记|C++数据结构与算法学习笔记-二叉树(五)|LeetCode404.左叶子之和、513.找树左下角的值、112.路经总和

找到。

糖炒栗子 1141

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

[LeetCode]112. 路径总和 —— javascript

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 var hasPathSum = function(root, sum) { if (!root) return false; var cur = sum-root.val; if (!root.left&&am...

lalalala~ 526

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

leetcode 112 路径总和

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

WYXHAHAHA123的博客 390

WINCC7.3破解文件

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

Leetcode112:路经总和(dfs/bfs)

Leetcode112:路经总和1.深度优先(dfs)/递归2.广度优先(dfs)/递归 1.深度优先(dfs)/递归 ->一道比较简单的题目,一看就知道可以使用递归的方式解决。   以往的dfs是返回所有路径,这题只需要判断是否存在一条路符合条件,因此简化了问题。注意到递归问题所有的结果都 return 自最底部的判断,因此在这里bfs或者递归形式上可以理解为对每个树节点赋值 true 或者 false; 当递归到最底部左侧某条路,如果这条路符合条件 返回 true,表示对这个节点的肯定。 他的右边条件已

qq_37297658的博客 230

代码随想录算法训练营第十五天(二叉树篇)|513. 找树左下角的值,112. 113. 路经总和

然后以此类推,到左节点4,深度变为3,因为4无子嗣,且所在depth高于max_depth,1,于是result右节点2替换成节点4,max_depth变为3。如果调用的函数中又调用了一次自己,那么在最里层的函数执行完,回溯之后,它外面那一层的函数此时也执行完毕,于是再回溯了一次,这样就总共回溯了两次。我们知道坐下角一定是在某一层的最左边,也就是第一个被遍历到的,但并不能直接到达想要的最后一层,因此就几下每一层最左边的元素,直到某层之后再无子嗣,就返回记录下的最后一个元素的值。真的是“一入递归深似海”啊!

Huiwen18的博客 1029

【LeetCode每日一题】——113.路经总和II

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 树 二【题目难度】 中等 三【题目编号】 113.路经总和II 四【题目描述】 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 五【题目示例】 示例 1: 输入:root = [5,4,8,11,null,1

IronmanJay 393

LeetCode 112 路经总和

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

eswang的优快云博客 288

【LeetCode面试经典150题】112. 路经总和

路经总和

qq_29536773的博客 530

LeetCode 112. 113. 路经总和

文章目录112. 路径总和113. 路径总和 II 112. 路径总和 难度:简单。 标签:深度优先搜索,二叉树。 先放一个错误的解法: class Solution { bool dfs(TreeNode* root, int k){ if(root == nullptr && k == 0){ return true; } if(root == nullptr)return false;

almost_afei的博客 138

力扣题112路经总和

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

xxyneymar的博客 137

路经总和-二叉树题

targetsum每层-root->val直到和最后一个不为空的root->val相等;每次递归传当前节点的左右子树以及当前节点的val直到root为空结束。sum队列存每条路径走到这个节点的val的总和;节点和总和对应着同时存入队列,同时出队列;node队列存节点;

user2604530353的博客 411

leetcode 112.路经总和 递归

代码】leetcode 112.路经总和 递归。

Alkali!的博客 179

路经总和002

1、描述 112给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->

Tlwhisper的博客 590
上一篇: 【链表】力扣 141. 环形链表
下一篇: 【二叉树】力扣 129.求根节点到叶子节点数字之和
JZihui
博客等级 码龄6年 170粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值