当前位置: 首页 > news >正文

119 BFS和DFS解二叉树的所有路径

问题描述:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。

DFS求解:定义一个全局的链表,用来装所有的结果,通过DFS遍历,一旦遍历到当前节点没有子节点,则将该节点加入链表后放入全局链表中,如果当前节点有两个子节点,则新生成一个从父节点传下来的链表,并进行两个分支的递归求解。

public void dfs(TreeNode root,List<TreeNode>list,List<List<TreeNode>>res)
{
if(root.left==null&&root.right==null)
{
list.add(root);
res.add(list);
return;
}else if(root.left!=null&&root.right==null)
{
list.add(root);
dfs(root.left,list,res);
}else if(root.right!=null&&root.left==null)
{
list.add(root);
dfs(root.right,list,res);
}else
{
list.add(root);
List<TreeNode>list1=new LinkedList(list);
dfs(root.left,list,res);
dfs(root.left,list1,res);
}
}
public List<List<TreeNode>>Dfs(TreeNode root)
{
List<List<TreeNode>>res=new List<List<TreeNode>>();
List<TreeNode>list=newLinkedList<>();
dfs(root,list,res);
​​​​​​​return res;
}

BFS求解:

public List<List<TreeNode>>bfs(TreeNode root)
{
Queue<TreeNode>queue=new LinkedList<>();
Queue<List<TreeNode>>queueList=new Linkedlits<>();
List<TreeNode>list=new LinkedLits<>();
list.add(root);
queue.add(root);
queueList.add(list)
while(!queue.isEmpty())
{
List<TreeNode>tempList=queueList.poll();
TreeNode tempNode=queue.poll();
if(tempNode.left==null&&tempNode.right==null)
{
res.add(tempList);
}else if(tempNode.left!=null&&tempNode.right==null)
{
tempList.add(tempNode.left);
queue.add(tempNode.left);
}else if(tempNode.right!=null&&tempNode.left==null)
{
tempList.add(tempNode.right);
queue.add(tempNode.right);
}else
{
List<TreeNode>newList1=new LinkedList<>(tempList);
tempList.add(tempNode.left);
queueList.add(tempList);
newList1.add(tempNode.right);
queuelist.add(newList1);
}
}
return res;
}

相关文章:

119 BFS和DFS解二叉树的所有路径

问题描述&#xff1a;给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。说明&#xff1a;叶子节点是指没有子节点的节点。 DFS求解&#xff1a;定义一个全局的链表&#xff0c;用来装所有的结果&#xff0c;通过DFS遍历&#xff0c;一旦遍历到当前节点没有子节点…...

SpringBoot缓存相关注解的使用

CacheConfig&#xff1a;主要用于配置该类中会用到的一些共用的缓存配置 Cacheable&#xff1a;主要方法的返回值将被加入缓存。在查询时&#xff0c;会先从缓存中获取&#xff0c;若不存在才再发起对数据库的访问 CachePut&#xff1a;主要用于数据新增和修改操作 CacheEvi…...

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数&#xff0c;该调用了自定义函数validScript&#xff0c;该函数中用户能够控制 functi…...

计算机网络-甘晴void学习笔记

计算机网络 计科210X 甘晴void 202108010XXX 文章目录 计算机网络期中复习1计算机网络和因特网1.1 因特网1.2 网络边缘1.3 网络核心1.4 分组交换的时延/丢包和吞吐量1.5 协议层次与服务模型 2 应用层原理2.1 应用层协议原理2.2 Web和Http2.3 因特网中的电子邮件2.4 DNS&#x…...

vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

文章目录 一、实现效果二、实现方法1、安装echarts插件2、获取省市json数据3、本例中data 数据4、吉林省地图的绘制5、柱状图样式6、设置柱状底部涟漪特效样式7、数据处理 三、示例代码已上传&#xff0c;去顶部可下载四、效果展示 一、实现效果 使用echarts实现省市地图绘制&…...

Android aar包集成与报错

Android Studio引用AAR的方式&#xff0c;分为gradle7.0之前与7.0之后 一、集成步骤 方法一&#xff1a; 1.将对应的xxx.aar包复制到项目的libs目录下&#xff08;xxx代表需要引入的aar包名称&#xff09; 2.然后在模块的build.gradle文件中配置implementation files(libs/lib…...

CentOS 7.9 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境&#xff0c;客观条件不得不用的话&#xff0c;优选7.9版本&#xff0c;8.5版本次之&#xff0c;最次6.10版本&#xff08;比如说Oracle 11GR2就建议在6版本上部署&#xff09;&#xff01; 引导和开始安装 选择倒计时结…...

Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting

Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting 登录到Gitea中&#xff0c;编辑app.ini vi /data/gitea/conf/app.ini [webhook] ALLOWED_HOST_LIST 你的IP地址示例 [webhook] ALLOWED_HOST_LIST 192.168.3.98...

SQL 最大连续合格次数 最大连胜记录次数 最大连败记录次数

有这样一个问题&#xff0c;工厂中要统计某个供应商送货检验的情况&#xff0c;依照其连续合格次数&#xff0c;决定是否免检&#xff0c;不使用游标或者循环&#xff0c;如何写这个sql。 此情景也可以用于统计连胜记录等 先要学习一下 窗函数LAG&#xff0c;指的是按分组和排…...

着色器语言GLSL学习

1 初步尝试 import { Scene, WebGLRenderer, OrthographicCamera, PlaneGeometry, ShaderMateria } from three.jsconst scene new Scene() const camera new OrthographicCamera(-1,1,1,-1,0.1, 10)const renderer new WebGLRenderer() renderer.setSize(window.innerWidt…...

C#: form 窗体的各种操作

说明&#xff1a;记录 C# form 窗体的各种操作 1. C# form 窗体居中显示 // 获取屏幕的宽度和高度 int screenWidth Screen.PrimaryScreen.Bounds.Width; int screenHeight Screen.PrimaryScreen.Bounds.Height;// 设置窗体的位置 this.StartPosition FormStartPosition.M…...

“尔滨”宠粉再升级!百亿像素VR冰雪盛宴

1月10日&#xff0c;由哈尔滨市委网信办、哈尔滨日报社主办&#xff0c;冰城客户端、哈尔滨新闻网承办的“激情迎亚冬&#xff0c;冰雪暖世界——2024年哈尔滨冰雪乐园”VR沉浸式体验产品正式上线。 如果你还没去过最近爆火出圈的“尔滨” ❄️这份哈尔滨冰雪景点VR❄️ 为你…...

redis原理(四)redis命令

目录 一、字符串命令&#xff1a; 二、列表命令&#xff1a; 三、集合命令&#xff1a; 四、散列命令&#xff1a; 五、有序集合命令&#xff1a; 六、redis发布与订阅命令&#xff1a; 七、事务命令 八、其他命令 1、排序&#xff1a;SORT 2、键的过期时间&#xff…...

FairGuard游戏安全2023年度报告

导 读&#xff1a;2023年&#xff0c;游戏行业摆脱了疫情带来诸多负面影响&#xff0c;国内游戏市场收入与用户规模双双实现突破&#xff0c;迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&#xff0c;不少游戏饱受其侵扰&#xff0c;游戏厂商愈发重视游戏安全问题。 为帮助…...

进阶Docker4:网桥模式、主机模式与自定义网络

目录 网络相关 子网掩码 网关 规则 docke网络配置 bridge模式 host模式 创建自定义网络(自定义IP) 网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结构。 IP 地…...

Qt 状态机框架:The State Machine Framework (二)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 1、利用并行态避免态的组合爆炸 假设您想在单个状态机中对汽车的一组互斥属性进行建模。假设我们感兴趣的属性是干净与肮脏,以及移动与不移动。需要四个相互排斥的…...

【Redis】更改redis中的value值

今天继续进步一点点~~ 背景&#xff1a;今天有个前端的同事问我&#xff0c;能不能在Redis中他本人登录公众号的 sessionID 加上一列openID 于是我上网查了一堆在Redis里面的命令&#xff0c;以及不同的客户端怎么输入命令&#xff0c;但是后来问了下同事&#xff0c;他就给我…...

数据结构Java版(2)——栈Stack

一、概念 栈也是一种线性数据结构&#xff0c;最主要的特点是入栈顺序和出栈顺序是相反的&#xff0c;操作时只能从栈顶进行操作&#xff0c;在Java中给我们提供了一个泛型栈——Stack&#xff0c;其中最常用的方法有&#xff1a; void push(E):进栈E pop():退栈E peek():查看…...

tcpdump 用法

tcpdump 是一个用于捕获和分析网络数据包的命令行工具。它可以在网络上截取数据包&#xff0c;并以可读的格式输出&#xff0c;方便进行网络故障排除和协议分析 tcpdump -i interface # 指定网络接口&#xff1a; tcpdump host target_host # 过滤特定主机的流量 tcpdump port…...

JavaScript SEO:如何为搜索引擎优化 JS

什么是 JavaScript SEO&#xff1f; JavaScript SEO 是技术 SEO 的一部分&#xff0c;其重点是使使用 JavaScript 构建的网站更容易被搜索引擎抓取、呈现和索引。 常见任务包括以下内容&#xff1a; 优化通过 JavaScript 注入的内容正确实施懒加载遵循内部链接最佳实践预防、…...

FPGA无人机电源设计:集成PMIC方案如何解决多路供电与空间挑战

1. 项目概述与核心挑战最近在做一个由FPGA控制的无人机项目&#xff0c;其中电源管理系统的设计让我感触颇深。无人机这玩意儿&#xff0c;飞控、图传、传感器一个比一个耗电&#xff0c;但留给电源和PCB的空间却极其有限。更头疼的是&#xff0c;主控用上了高性能的FPGA或SoC&…...

盲人出行辅助系统原型

我做了一个很有意义的盲人出行辅助系统原型&#xff0c;主要是结合现有导航OSRM/高德&#xff0c;实时感知前方潜在危险目标&#xff0c;辅助视障人士出行。 持续优化中&#xff08;20260519&#xff09;&#xff0c;欢迎大家尝试&#xff0c;有一些想法也可以提出来。 开源地址…...

告别重影和误检:手把手教你为Apollo 7.0激光雷达数据做运动补偿

激光雷达运动补偿实战&#xff1a;解决Apollo 7.0中的点云畸变问题 当自动驾驶车辆以72km/h的速度行驶时&#xff0c;激光雷达每采集一帧点云的100毫秒内&#xff0c;车辆已经移动了2米。这个看似微小的位移&#xff0c;却会导致点云中出现车辆"分身"、建筑物扭曲等诡…...

电机PID调参总翻车?试试VOFA+这个“示波器”功能,实时对比目标与实际值

电机PID调参实战&#xff1a;用VOFA实现波形可视化诊断 调试电机PID控制器时&#xff0c;最令人头疼的莫过于面对一堆抽象数据却无法直观理解系统行为。传统方法依赖串口打印数值或简单示波器观察&#xff0c;往往需要反复修改参数、重新烧录程序&#xff0c;效率低下且容易错过…...

从零构建YOLOv8火焰烟雾检测系统:GUI开发、模型训练与实战部署全解析

1. 项目背景与核心价值 火焰烟雾检测在工业安全、森林防火和智能家居等领域有着广泛的应用需求。传统检测方法主要依赖传感器&#xff0c;但存在响应慢、覆盖范围有限等问题。基于计算机视觉的解决方案能够突破物理限制&#xff0c;实现大范围实时监控。YOLOv8作为当前最先进的…...

Grounding DINO实战评测:对比GLIP、OV-DETR,在COCO和LVIS数据集上到底强在哪?

Grounding DINO技术解析&#xff1a;多模态开放集检测的突破与实践 在计算机视觉与自然语言处理的交叉领域&#xff0c;开放集目标检测正经历着前所未有的技术革新。传统检测模型受限于预定义类别集的桎梏&#xff0c;而新一代多模态大模型通过融合视觉与语言信号&#xff0c;实…...

别再死记硬背了!用LabVIEW玩转模拟输出,从单点控制到连续波形生成的保姆级避坑指南

别再死记硬背了&#xff01;用LabVIEW玩转模拟输出&#xff0c;从单点控制到连续波形生成的保姆级避坑指南 在工业自动化和测试测量领域&#xff0c;LabVIEW作为图形化编程的标杆工具&#xff0c;其模拟输出功能是数据采集系统的核心模块。许多初学者面对"单点生成"、…...

从信号放大器到协议感知:深入解析Retimer与Redriver在高速链路中的角色演进

1. 高速链路中的信号完整性挑战 当你把手机靠近路由器时&#xff0c;网速会突然变快&#xff1b;用Type-C线连接移动硬盘传输大文件时&#xff0c;偶尔会出现卡顿——这些现象背后都隐藏着信号完整性这个关键问题。在AI服务器、数据中心互连、高端显卡这些需要高速数据传输的场…...

Knot高级技巧:局域网设备抓包和跨设备数据同步

Knot高级技巧&#xff1a;局域网设备抓包和跨设备数据同步 【免费下载链接】Knot 一款iOS端基于MITM(中间人攻击技术)实现的HTTPS抓包工具&#xff0c;完整的App&#xff0c;核心代码使用SwiftNIO实现 项目地址: https://gitcode.com/gh_mirrors/kn/Knot Knot是一款iOS端…...

【笔记】旧AI,新人类

AI擅长"旧"&#xff0c;人类擅长"新" 关于人机分工的一点思考 不久前&#xff0c;一场颇具戏剧性的"人机对决"在餐饮界引起了不小的波澜。"美膳狮"智能炒菜机器人与湘菜厨师杨孙同台竞技&#xff0c;共同炒制三道菜&#xff1a;XO酱笋…...