Leetcode-每日一题【剑指 Offer 34. 二叉树中和为某一值的路径】

news2024/9/26 1:25:35

题目

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

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

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:[[5,4,11,2],[5,8,4,5]]

示例 2:

输入:root = [1,2,3], targetSum = 5
输出:[]

示例 3:

输入:root = [1,2], targetSum = 0
输出:[]

提示:

  • 树中节点总数在范围 [0, 5000] 内
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

解题思路

1.题目要求我们找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。我们可以使用深度优先遍历来解决这个问题。

2.举个例子:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22

首先我们建立两个动态数组res和temp来存储结果和遍历的路径。

 然后我们从根节点开始遍历,先将 5 放入数组 temp ,并且给 target 减 5 。

此时 target 不为 0 ,那么我们需要继续遍历,再将 5 的左孩子 4 放入temp 中,并且给 target 减 4。

 此时 target 不为 0 ,那么我们需要继续遍历,再将 4 的左孩子 11 放入temp 中,并且给 target 减 11。

  此时 target 不为 0 ,那么我们需要继续遍历,再将 11 的左孩子 7 放入temp 中,并且给 target 减 11。

这时我们发现 7 已经是叶子节点,但是target还是不为 0 ,那就说明这条路不是路径总和等于给定目标和的路径,我们就需要回溯,我们返回上一个节点,也就是11。

然后我们去遍历 11 的右孩子 2 , 将 11 的右孩子 2 放入temp 中,并且给 target 减 2。

 

此时 target 刚好为 0 ,并且 2 也是叶子节点,那就说明我们找到了路径总和等于给定目标和的路径,我们需要将 temp 中保存的路径放入数组 res 中,

然后再进行回溯按照相同的思路去遍历其他的节点,直到所有节点都遍历结束,最后返回 res即可。

代码实现

class Solution {
    List<List<Integer>> res;
    List<Integer> temp;
    public List<List<Integer>> pathSum(TreeNode root, int target) {
        res = new ArrayList<>();
        temp = new ArrayList<>();
        dsf(root,target);
        return res;
    }
    void dsf(TreeNode root, int target){
        if(root == null){
            return;
        }
        temp.add(root.val);
        target = target - root.val;
        if(root.left == null && root.right == null && target == 0){
            res.add(new ArrayList(temp));
        }
        dsf(root.left, target);
        dsf(root.right, target);
        temp.remove(temp.size()-1);
}
}

测试结果

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成都爱尔谭娇主任提醒孩子不停揉眼睛是因为什么

孩子总是揉眼睛&#xff0c; 明显眼睛不舒服&#xff0c; 但看着好像没什么? 可孩子不停眨眼流泪&#xff0c; 肯定不对…… 孩子到底怎么了? 孩子可能长了“倒睫”! 孩子出现倒睫毛就是睫毛不朝外长而向内长&#xff0c;是婴幼儿很容易患的一种眼病。 由于孩子的脸颊及鼻梁发…

为什么选择模块化机柜?

模块化机柜是一种使用模块化设计的机柜&#xff0c;它的特点就是可以灵活组合和扩展&#xff0c;方便用户根据实际需求进行定制。 模块化机柜具有以下特点&#xff1a; 可定制性&#xff1a;模块化机柜可以根据用户的具体需求和空间限制&#xff0c;进行自由组合和定制。用户…

无人直播应该这样操作!

随着无人直播带货的迅猛发展&#xff0c;越来越多的商家和个人开始关注如何运营一成功的无人直播带货活动。本文将为您提供一份操作指南&#xff0c;并在此基础上探讨无人直播带货的思考深度和逻辑性。 一、了解无人直播带货的基本概念 无人直播带货是指通过直播平台和…

级联/嵌套查询

在真实业务背景中的系统中&#xff0c;对于用户的认证、授权以及鉴权的问题&#xff0c;通常不只依靠一张用户表来完成。一般还涉及用户角色表&#xff0c;用户-角色关系表&#xff0c;权限表&#xff0c;以及角色-权限关系表。此时查询数据库&#xff0c;除了使用关联查询还有…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 2 Inport和Outports 标签页介绍

上篇我们介绍了Function页的内容,这篇我们介绍Inports和Outports页的内容,这里我们再次强调一个概念,code mapping是以simulink的角度去看的,就是先要在模型中建立simulink模块,在code mapping里映射他要对应的autosar的元素,之后生成代码时的c语言的名字是以Autosar的元…

面试3个月72次全挂,程序员晒凄惨经历,网友:是个狠人

说起面试&#xff0c;对于大多数求职者来说&#xff0c;找到一份真正合适工作的过程&#xff0c;无疑就是一场不断患得患失的煎熬之旅。 为什么这么说呢&#xff1f;因为找工作的漫长过程&#xff0c;不仅需要很大的体力消耗&#xff0c;给心理带来的巨大负担也是让很多人感到…

SRv6 BE实验

以上内容均属原创&#xff0c;如有不详或错误&#xff0c;敬请指出。本文作者&#xff1a; 坏坏 本文链接&#xff1a; http://t.csdn.cn/Q6VaU 版权声明&#xff1a; 本博客所有文章除特别声明外&#xff0c;如需转载&#xff0c;请联系作者注明出处并附带本文链接&#xf…

蓝海创意云×悦乐兔99艺术节直播首秀顺利开播

8月18日&#xff0c;苏州悦乐兔99艺术节直播首秀顺利开播&#xff0c;蓝海创意云为此次直播提供了全程技术支持&#xff0c;使用自主研发的vLive虚拟直播系统嵌入整个直播流程&#xff0c;带给观众一场不一样的全新视觉体验。 蓝海创意云x悦乐兔直播首秀顺利开播 蓝海创意云助力…

计算机竞赛 地铁大数据客流分析系统 设计与实现

文章目录 1 前言1.1 实现目的 2 数据集2.2 数据集概况2.3 数据字段 3 实现效果3.1 地铁数据整体概况3.2 平均指标3.3 地铁2018年9月开通运营的线路3.4 客流量相关统计3.4.1 线路客流量排行3.4.2 站点客流量排行3.4.3 入站客流排行3.4.4 整体客流随时间变化趋势3.4.5 不同线路客…

根据源码,模拟实现 RabbitMQ - 转发规则实现(6)

目录 一、转发规则实现 1.1、需求分析 1.2、实现 Router 转发规则 1.2.1、bindingKey 和 routingKey 参数校验 1.2.2、消息匹配规则 1.2.3、主题交换机匹配规则 一、转发规则实现 1.1、需求分析 这里主要实现 routingKey 和 bindingKey 参数的校验&#xff0c;以及 Topic…

邀请函 | 高质量区块链·元宇宙—标准行系列沙龙(北京站)即将开启

区块链、元宇宙是近年来备受关注的新兴技术&#xff0c;也是推动数字经济发展的重要力量。高质量标准引领高质量发展&#xff0c;加快形成标准引领&#xff0c;充分释放区块链、元宇宙对实体经济牵引赋能效应&#xff0c;推进形成相关产业体系高质量发展新格局刻不容缓。 为进…

AIGC|万字长文!带你了解AI大模型技术演进

一、AI的起源 在下面这张图中&#xff0c;我们可以看到两个人物&#xff1a;图中左边的人物是一位演员&#xff0c;他出演了一部名为《模仿游戏》的电影。而这部电影实际上讲述的是图中右边的人物&#xff0c;他就是是人工智能之父图灵&#xff08;Alan Turing&#xff09;。 …

Python可视化在量化交易中的应用(17)_Seaborn核密度曲线图

Seaborn中核密度图的绘制方法 seaborn中绘制核密度图使用的是sns.kdeplot()函数&#xff1a; sns.kdeplot(x,y,shade,vertical,kernel,bw,gridsize200,cut3,clip,legend,cumulative,shade_lowest,cbar,cbar_ax,cbar_kws,ax,weights,hue,palette,hue_order,hue_norm,multiple‘…

做好产品设计应遵循的5大原则

产品设计原则是产品设计需遵循的基础规则&#xff0c;如果没有遵循设计原则&#xff0c;直接进行产品设计&#xff0c;往往会造成产品设计不稳定、冗杂&#xff0c;不能真正满足用户需求&#xff0c;这为项目带来较大风险&#xff0c;影响项目顺利交付。 一般来说&#xff0c;做…

【实用工具】ScreenToGif 制作GIF

1、介绍 官方地址 ScreenToGif是一款优秀的录屏软件&#xff0c;可将屏幕上的软件操作、会议视频、视频聊天等录制为GIF或MP4格式的文件。 ScreenToGif的启动界面包含屏幕录像机、电脑摄像头录制、画板录制和编辑器4个功能。启动录像机功能后&#xff0c;会有一个录制窗口&am…

【Axure高保真原型】通过输入框动态控制折线图

今天和大家分享通过输入框动态控制折线图的原型模板&#xff0c;在输入框里维护项目数据&#xff0c;可以自动生成对应的折线图&#xff0c;鼠标移入对应折点&#xff0c;可以查看对应数据。使用也非常方便&#xff0c;只需要修改输入框里的数据&#xff0c;或者复制粘贴文本&a…

Docker容器与虚拟化技术:Docker-Compose

目录 一、理论 1.Docker-Compose 二、实验 1. Docker Compose 安装部署 2.Docker Compose撰写nginx 镜像 3.Docker Compose撰写tomcat 镜像 三、问题 1.Docker Compose 和 Dockerfile 的区别 四、总结 一、理论 1.Docker-Compose &#xff08;1&#xff09;使用场景…

【Linux】进程间通信之信号机制2

文章目录 信号阻塞代码验证验证信号的阻塞验证信号的阻塞不影响信号注册验证可靠信号不会丢信号&#xff0c;不可靠信号会丢信号验证9号和19号信号不能被阻塞 用信号解决僵尸进程volatile关键字 信号阻塞代码验证 在上篇详解信号机制的博文中&#xff0c;我们提到了设置阻塞位…

RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估

前言 上一期讲到YCSB在RISC-V服务器上对MySQL进行性能测试&#xff08;RISC-V公测平台发布 使用YCSB测试SG2042上的MySQL性能&#xff09;&#xff0c;在这一期文章中&#xff0c;我们继续深入讨论RISC-V数据库的应用。本期就继续利用HS-2平台来测试数据库软件在RISC-V服务器…

基于PaddlePaddle实现的声纹识别系统

前言 本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM等多种先进的声纹识别模型&#xff0c;不排除以后会支持更多模型&#xff0c;同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法&#xff0c;使用了ArcFace Loss&#xff0c;ArcFace loss…