递归的层序遍历
最近遇到一个业务需求:一颗依赖树,其实就是一颗递归树,如何一层一层的数据放在一起,可以近似理解为二叉树的层序遍历。
业务理解为递归树的层序遍历
代码示例:
public class RecursionErgodic {public static void main(String[] args) {User user = buildUser();System.out.println(user);Map<Integer, List<String>> map = new HashMap<>();int index = 1;List<User> childRen = user.getChildRen();List<String> list = new ArrayList<>();list.add(user.getName());map.put(index, list);cfsTraversal(childRen, map, index + 1);System.out.println(map);}private static void cfsTraversal(List<User> childRen, Map<Integer, List<String>> map, int index) {if (childRen == null) {return;}int size = childRen.size();for (int i = 0; i < size; i++) {User user = childRen.get(i);List<String> list = map.get(index);if (list == null) {list = new ArrayList<>();}list.add(user.getName());map.put(index, list);//特别注意:递归 这里不要改变index本身的值cfsTraversal(user.getChildRen(), map, index + 1);}}public static User buildUser() {User user = new User();user.setId(1);user.setName("座山雕");User user1 = new User();user1.setId(2);user1.setName("刘大脑袋");User user2 = new User();user2.setId(3);user2.setName("殷八字");User user3 = new User();user3.setId(4);user3.setName("刘大脑袋徒弟1");User user4 = new User();user4.setId(5);user4.setName("刘大脑袋徒弟2");User user5 = new User();user5.setId(6);user5.setName("殷八字徒弟2");List<User> list2 = new ArrayList<>();list2.add(user4);list2.add(user3);user1.setChildRen(list2);List<User> list3 = new ArrayList<>();list3.add(user5);user2.setChildRen(list3);List<User> list1 = new ArrayList<>();list1.add(user1);list1.add(user2);user.setChildRen(list1);return user;}static class User {private int id;private String name;private List<User> childRen;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<User> getChildRen() {return childRen;}public void setChildRen(List<User> childRen) {this.childRen = childRen;}}
}
结果:
输入(一个对象):
{"childRen":[{"childRen":[{"id":5,"name":"刘大脑袋徒弟2"},{"id":4,"name":"刘大脑袋徒弟1"}],"id":2,"name":"刘大脑袋"},{"childRen":[{"id":6,"name":"殷八字徒弟2"}],"id":3,"name":"殷八字"}],"id":1,"name":"座山雕"}
输出(一个map)
{1=[座山雕], 2=[刘大脑袋, 殷八字], 3=[刘大脑袋徒弟2, 刘大脑袋徒弟1, 殷八字徒弟2]}
相关文章:
递归的层序遍历
最近遇到一个业务需求:一颗依赖树,其实就是一颗递归树,如何一层一层的数据放在一起,可以近似理解为二叉树的层序遍历。 业务理解为递归树的层序遍历 代码示例: public class RecursionErgodic {public static void…...
pytest使用 pytest-rerunfailures 插件实现失败用例重跑功能
使用 pytest 进行测试时,你可以通过安装并配置 pytest-rerunfailures 插件来实现失败用例重跑功能。以下是一个示例说明: 假设你有一个测试文件 test_example.py 包含如下测试用例: import pytestpytest.mark.parametrize("num",…...
2024/4/23 C++day1
有以下定义,说明哪些量可以改变哪些不可以改变? const char *p; 指针可以改变 值不可以改变 const (char *) p; 语法错误 char *const p; 指针不可以改变 值可以改变 const char* const p; 指针和值…...
OpenHarmony鸿蒙南向开发案例:【智能窗户通风设备】
样例简介 本文档介绍了安全厨房案例中的相关智能窗户通风设备,本安全厨房案例利用轻量级软总线能力,将两块欧智通V200Z-R/BES2600开发板模拟的智能窗户通风设备和燃气告警设备组合成。当燃气数值告警时,无需其它操作,直接通知软总…...
解析‘找不到vcruntime140.dll,无法继续执行代码’的异常修复方法
找不到vcruntime140.dll,无法继续执行代码?这是小事情,这个情况主要是vcruntime140.dll文件丢失了,导致一些程序没办法正常的运行,我们只要修复好这个vcruntime140.dll,文件就可以了。下面一起来了解一下。 一.找不到vcruntime140…...
Golang对接Ldap(保姆级教程:概念搭建实战)
Golang对接Ldap(保姆级教程:概念&搭建&实战) 最近项目需要对接客户的LDAP服务,于是趁机好好了解了一下。LDAP实际是一个协议,对应的实现,大家可以理解为一个轻量级数据库。用户查询。比如ÿ…...
Java23种设计模式-创建型模式之工厂方法模式
工厂方法模式(Factory Method Pattern) 一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定将哪一个类实例化,从而将产品的实例化推迟到子类中。这种模式的主要角色包括: 角色1:抽…...
Oracle故障处理:ORA-00600错误处理思路
提前说明: 该故障,我只是旁观者。 但处理该故障的DBA工程师,思路很清晰,我非常受教!在此也将经验分享。 目录 项目场景 问题分析 优化建议 项目场景 在某项目数据库运维群,有现场同事发了张报错截图如下…...
微信小程序使用 Vant Weapp 中 Collapse 折叠面板 的问题!
需求:结合Tab 标签页 和 Collapse 折叠面板 组合成显示课本和章节内容,并且用户体验要好点! 如下图展示: 问题:如何使用Collapse 折叠面板 将内容循环展示出来? js中的数据是这样的 代码实现࿱…...
论文写作神器:用ChatGPT写论文的5大高效技巧
在人工智能日渐成熟的今天,ChatGPT已经成为学术界、业界乃至日常生活中不可或缺的工具之一。尤其是对于学生和研究人员而言,ChatGPT能大幅度提高论文写作的效率和质量。然而,许多人尚未掌握如何高效利用这一工具,很多人用chatgpt写…...
微信小程序展示倒计时
html <view class"countdown"> <text>倒计时:</text> <text wx:for"{{countdown}}" wx:key"index">{{item}}</text> </view> ts data: {countdown: [], // 存放倒计时数组 targetTime:…...
什么是用户体验(UX)文案,为什么它很重要?
网上购物如今比以往任何时候都更加相关。所以我们将以此为例说明什么是用户体验(UX)文案,以及为什么它很重要。 假设你去了一个在线商店。你需要执行一系列操作: 找到合适的部分选择你感兴趣的产品弄清楚它们是什么,…...
算法06链表
算法06链表 一、链表概述1.1概述1.2链表的组成部分:1.3链表的优缺点: 二、链表典例力扣707.设计链表难点分析:(1)MyLinkedList成员变量的确定:(2)初始化自定义链表:&…...
第十七章 数据管理和组织变革管理
17.2 变革法则 1)组织不变革,人就变。 2)人们不会抗拒变革,但抵制被改变。 3)事情之所以存在是惯性所致。 4)除非有人推动变革,否则很可能止步不前。 5)如果不考虑人的因素…...
基于harris角点和RANSAC算法的图像拼接matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ....................................................................... I1_harris fu…...
C++感受6-Hello World 交互版
变量、常量输入、输出、流getline() 函数读入整行输入Hello() 函数复习新定义函数 Input() 实现友好的人机交互还有 “痘痘” 为什么挤不到的分析…… 1. DRY 原则简介 上一节课,我们写了两版“问候”程序。第一版的最大问题是重复的内容比较多,每一次问…...
02_c/c++开源库ZeroMQ
1.安装 C库 libzmq sudo apt install libzmq3-dev 实例: https://zeromq.org/get-started/?languagec&librarylibzmq# 编译依赖: pkg-config --cflags --libs libzmq or cat /usr/lib/x86_64-linux-gnu/pkgconfig/libzmq.pc -isystem /usr/include/mit-krb5 -I/usr/in…...
计算机视觉 CV 八股分享 [自用](更新中......)
目录 一、深度学习中解决过拟合方法 二、深度学习中解决欠拟合方法 三、梯度消失和梯度爆炸 解决梯度消失的方法 解决梯度爆炸的方法 四、神经网络权重初始化方法 五、梯度下降法 六、BatchNorm 七、归一化方法 八、卷积 九、池化 十、激活函数 十一、预训练 十二…...
【MHA】MySQL高可用MHA源码1-主库故障监控
1 阅读之前的准备工作 1 一个IDE工具 ,博主自己尝试了vscode安装perl的插件,但是函数 、变量 、模块等都不能跳转,阅读起来不是很方便。后来尝试使用了pycharm安装perl插件,阅读支持跳转,自己也能写一些简单的测试样例…...
如何一键清除文件目录下所有的node_modules
如何一键清除文件目录下所有的node_modules 快速删除目录下的node_modules,下面附上windows和mac的脚本指令 windows脚本 FOR /d /r . %d in (node_modules) DO IF EXIST "%d" rm -rf "%d"mac脚本 find . -name "node_modules" -…...
【产品经理修炼之道】- 导航架构设计
目录 一、导航是什么 二、导航的作用 三、导航的分类 四、导航菜单的广度与深度 五、导航的颜色 六、导航的形态 七、导航的研究 八、导航的设计 九、导航改版案例分享 总结 每个网页的设计都需要包括导航,那么导航架构该如何设计?作者结合之前…...
本地部署和运行大型语言模型(Large Language Models, LLMs)的工具Ollama
文章目录 本地部署和运行大型语言模型(Large Language Models, LLMs)的工具Ollama背景什么是Ollama主要功能优势 使用场景Ollama LangChain 实现本地运行Llama 3 本地部署和运行大型语言模型(Large Language Models, LLMs)的工具…...
Python-100-Days: Day01
Day01 Python简介 1.1989年Guido von Rossum在圣诞节之夜开始着手python语言编译器的编写。 2.1991年2月 Python v1 编译器诞生,使用C实现的,此时可以调用C的库函数。 3.1994年1月,Python v1.0 正式版发布。 4.2000年10月16日࿰…...
g 对象:Flask 应用中的“临时口袋”
文章目录 g对象的理解Flask 中的 g 对象g 对象的特点:使用 g 对象: 示例 g对象的理解 想象一下,你在逛超市。你需要一个购物篮来装你挑选的商品。这个购物篮就像 Flask 应用中的 g 对象,它是一个临时存放东西的地方,方便你在购物过程中随时取…...
JavaEE初阶——多线程(七)——定时器
T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程的第七篇文章——关于定时器 如果有不足的或者错误的请您指出! 目录 4.定时器4.1标准库提供的定时器4.2自己实现一个定时器4.2.1任务类4.2.2Timer类4.2.3 有一个线程来负…...
嵌入式4-24
作业: 整理思维导图 定义一个矩形类Rec,包含私有属性length,width,有以下成员函数: void set_length(int l); //设置长度 void set_width(int w); //设置宽度 int get_length(); //获取长度 int get_width(); //获取宽…...
跟我学C++中级篇——临时对象
一、临时对象 Temporary object,临时对象。一听名字就明白,这个对象的意义不大,只是临时中转一下或者存在一下,有的可能连个存在感都刷不到就消失了。但不要小看这种临时对象,对C/C这种以效率严苛为前提的编程环境下&…...
【S32K3 MCAL配置】-7.1-GPT Driver:定时器中断-创建一个周期执行的任务
"><--返回「Autosar_MCAL高阶配置」专栏主页--> 案例背景:常用于周期点亮/关闭一个LED灯;或者精度一般的占空比为50% PWM方波;或者周期调用一个函数,在该函数中我们可以执行一些软件策略(简易的OS)。 目录(共15页精讲,基于评估板: NXP S32K312EVB-Q172,…...
java可盈保险合同管理系统的设计与实现(springboot+mysql源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的可盈保险合同管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于Spring Boot的…...
【智能算法】囊状虫群算法(TSA)原理及实现
目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年,S Kaur等人受到囊状虫群自然行为启发,提出了囊状虫群算法(Tunicate Swarm Algorithm, TSA)。 2.算法原理 2.1算法思想 TSA模拟了囊状虫群在导…...
python基础——正则表达式
📝前言: 这篇文章主要想讲解一下python中的正则表达式: 1,什么是正则表达式 2,re模块三匹配 3,元字符匹配 4,具体示例 🎬个人简介:努力学习ing 📋个人专栏&am…...
T1级,生产环境事故—Shell脚本一键备份K8s的YAML文件
大家好,我叫秋意零。 最近对公司进行日常运维工作时,出现了一个 T1 级别事故。导致公司的“酒云网”APP的无法使用。我和我领导一起搞了一个多小时,业务也停了一个多小时。 起因是:我的部门直系领导,叫我**删除一个 …...
C语言程序设计:预处理命令
预处理命令 基础知识 预处理命令简介 C语言的预处理命令是指编译之前由预处理器执行的指令,用于在源代码中进行一些预处理操作。 常见预处理命令 (1) #define 定义一个宏,用于替换源代码中的标识符为指定的文本。 #define MAX_NUM 100 int arr[MAX_NU…...
C++ 中的 struct 和 Class
通常struct用于表示一组相关的数据,而Class用于表示一个封装了数据和操作的对象。如果只是用于来组织一些数据,而不涉及复杂的封装和继承关系,则struct更为直观;如果需要封装、继承等面向对象编程的特性,可以选择使用C…...
基于Qt的二维码生成与识别
基于Qt的二维码生成与识别 一、获取QZxing开源库 1.通过封装的QZxing开源库生成和识别二维码,下载地址:GitCode - 开发者的代码家园https://gitcode.com/mirrors/ftylitak/qzxing/tree/master。 2.下载解压后,使用Qt Creator xx࿰…...
docker 基本命令
目录 一、docker 镜像操作命令 1.1.查询软件镜像 1.2.docker pull:下载镜像 1.3.docker push:上传镜像 1.4.docker images:查看本地镜像 1.5.docker inspect :获取镜像详细信息 1.6.docker tag:添加镜像标签 …...
h5键盘弹出收起时引起的页面变化
h5键盘弹出收起时引起的页面变化 键盘弹出时会导致窗口发生变化,置于底部的操作项会被顶上来,所以在键盘弹出的时候处理一下页面节点 通过监听页面窗口大小变化判断键盘状态键盘弹出时隐藏底部操作项在页面加载完成时执行即可 export function keyboa…...
Redis入门到实战教程(基础篇)笔记
教学来源: Redis课程介绍导学_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cr4y1671t?p1一、Redis 入门 1.认识NoSQL 2.Redis在虚拟机中的安装和开机自启 Redis在虚拟机中安装和配置开机自启-CSDN博客https://blog.csdn.net/qq_69183322/article/deta…...
启动MySQL服务
在 Windows 系统上: 首先,找到 MySQL 安装目录,一般默认是在 C:\Program Files\MySQL 文件夹下。进入该目录下的 bin 文件夹。找到 mysqld.exe 文件,双击运行它。 在 Linux 系统(以 CentOS 为例)ÿ…...
Windows上构建 Chisel-Bootcamp
windows环境构建本地Chisel-Bootcamp 安装摘要Chisel-boocamp环境搭建安装java安装Anaconda安装scala 下载Chisel-bootcamp 环境Reference 安装摘要 在windows上安装chisel-boocamp,与linux过程类似。 安装java8安装anaconda安装scala下载Chisel-bootcamp环境 Ch…...
Spring Bean依赖注入-Spring入门(二)
1、SpringBean概述 在Spring中,一切Java对象都被视为Bean,用于实现某个具体功能。 Bean的依赖关系注入的过程,也称为Bean的装配过程。 Bean的装配方式有3种: XML配置文件注解Java类 Spring中常用的两种装配方式分别是基于XML的…...
java中spring底层核心原理解析(1)
相关系列 java中spring底层核心原理解析(2)-CSDN博客 总起 本章主要是讲以下的内容 Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理 先看spring入门代码: ClassPathXmlApplicationContext context new ClassPathXmlApplicationCo…...
Neo-reGeorg明文流量
Neo-reGeorg 1 同IP对,同一个URI,第一个TCP流是“GET”请求,随后的TCP流请求为“POST”。(jsp\jspx\php) 2 第一个TCP流中,GET只有一个会话。(jsp\jspx\php),响应body79…...
科技渔业,智慧守护:4G+北斗太阳能定位终端准确定位,防拆卸报警,夯实渔业管理水平
如何高效地管理渔船,有效监控禁渔区域,4G北斗太阳能定位终端应运而生,成为渔业管理的重要应用工具。 我国作为全球渔业的重要国家,渔业一直是沿海地区传统的支柱产业,对经济的繁荣和民生的稳定起着至关重要的作用。因…...
【Elasticsearch】Elasticsearch 从入门到精通(二):基础使用
《Elasticsearch 从入门到精通》共包含以下 2 2 2 篇文章: Elasticsearch 从入门到精通(一):基本介绍Elasticsearch 从入门到精通(二):基础使用 😊 如果您觉得这篇文章有用 ✔️ 的…...
基于DEAP数据集的四种机器学习方法的情绪分类
在机器学习领域,KNN(K-Nearest Neighbors)、SVM(Support Vector Machine)、决策树(Decision Tree)和随机森林(Random Forest)是常见且广泛应用的算法。 介绍 1. KNN&am…...
离散数学之一阶逻辑基本概念与等值演算思维导图+大纲笔记(期末复习,考研,学习笔记,知识点总结)
大纲笔记 基本概念 一阶逻辑命题符号化 个体词 个体常项 个体变项 个体域 个体总域 谓词 谓词常项 谓词变项 零元谓词 特性谓词 引入规则 量词 全称量词 存在量词 一阶逻辑1公式及解释 基本概念 原子公式 谓词公式 自由变元与约束变元 自由变元 换名规则 约束变元 带入规则 闭…...
nvm的下载与安装
nvm(Node Version Manager)是一个用于管理 Node.js 版本的工具,它允许您在同一台计算机上安装和切换不同的 Node.js 版本。 一、下载地址 https://github.com/coreybutler/nvm-windows/releases 二、安装nvm 三、设置环境变量 在命令提示…...
代码随想录算法训练营第五十二天|300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
文档链接:https://programmercarl.com/ LeetCode300.最长递增子序列 题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/ 思路:每次遇到一个新系列总是想不出来。 dp[i]:以nums[i]为尾的最长递增子序列的…...
SQL表连接详解:JOIN与逗号(,)的使用及其性能影响
省流版 在这个详细的解释中,我们将深入探讨SQL中表连接的概念,特别是JOIN和逗号(,)在连接表时的不同用法及其对查询性能的影响。通过实际示例和背后的逻辑分析,我们将揭示在不同场景下选择哪种连接方式更为合适。 1.…...
Bootstrap Studio for Mac:打造专业级网页设计软件
对于追求高效与品质的设计师和开发者来说,Bootstrap Studio for Mac无疑是最佳选择。它建立在广受欢迎的Bootstrap框架之上,输出干净、语义化的HTML代码。同时,强大的CSS和SASS编辑器,支持自动建议和规则验证,让您的设…...
革命性GPT-4o:重塑人机交互体验
OpenAI 发布的 GPT-4o 模型无疑是一个巨大的突破,特别是在其能够处理多种输入媒介(文本、音频、图像)并生成相应输出方面。这种能力使得人机交互更加自然和直观,极大地提升了 AI 的实用性和可用性。GPT-4o 的几个关键亮点包括&…...
Springboot+Vue项目-基于Java+MySQL的个人云盘管理系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...
VUE格式探究记录
1.背景 vue格式为鹰图Intergraph SP3D格式,是私有格式。博主对vue格式的直接解析可行性进行了初步的探究,记录如下。 2.探究 目前能够解析vue格式的软件有3类(其背后路线有可能有相同的), 鹰图Intergraph系列软件&…...
工厂自动化升级改造(3)-Modbus与MQTT的转换
什么是MQTT,Modbus,见下面文章 工厂自动化升级改造参考(01)--设备通信协议详解及选型-CSDN博客文章浏览阅读608次,点赞9次,收藏6次。>>特点:基于标准的以太网技术,使用TCP/IP协议栈,支持高速数据传输和局域网内的设备通信。>>>特点:跨平台的通信协议,…...
代码随想录算法训练营Day39 | 62.不同路径、63. 不同路径 II | Python | 个人记录向
本文目录 62.不同路径做题看文章 63. 不同路径 II做题看文章 以往忽略的知识点小结个人体会 62.不同路径 代码随想录:62.不同路径 Leetcode:62.不同路径 做题 注意初始化就行。 class Solution:def uniquePaths(self, m: int, n: int) -> int:dp …...
在澳门写代码;技术入股2次融资被踢;现在只想做独立开发
本期我们邀请的程序员是Albert,先后在广州、澳门、珠海、香港工作过,打工上班、合伙创业、远程工作、独立开发,工作经历丰富,如果你想知道哪些程序员踩过的坑,请别错过他的故事。 广州:第一份工作2000块一…...
tailwindcss - 不喜欢css人的福音
Tailwind CSS:实用主义的前端革新 在现代网页设计领域,Tailwind CSS以其独特的实用性风格迅速崛起,成为了前端开发者的新宠。这个高度可定制的工具集不仅提高了开发效率,还赋予了开发者无限的创造力。本文将带您深入了解Tailwind…...
Windows下配置TortoiseGit 访问Ubuntu虚拟机下Samba共享目录
前言: 本文记录学习使用 Git 版本管理工具的学习笔记,通过阅读参考链接中的博文和实际操作,快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: 【TortoiseGit】TortoiseGit安装和配置详细说明-CSDN博客 Git版本管理可视…...
k8s 二进制安装 详细安装步骤
目录 一 实验环境 二 操作系统初始化配置(所有机器) 1,关闭防火墙 2,关闭selinux 3,关闭swap 4, 根据规划设置主机名 5, 做域名映射 6,调整内核参数 7, 时间同步 三 部署 dock…...
MT3035 逆波兰式
思路: 两个栈str1和sr2,分别存放运算符和结果。 如果是数字,直接放入str2中。 如果是运算符: 1. ( :直接放入 str1 2. /-/*// 看栈顶元素,若当前字符优先级比栈顶大,则压到str1中&#x…...
信创基础硬件之整机
整机是成套或整体单机、单台形式的机电产品,由硬件系统(hardware system)和软件系统(software system)两部分组成的,包括主板、内存条、硬盘、CPU、光驱、机箱、显示器、键盘、鼠标、音响等部件。 服务器作为在网络环境下为客户机提供各种服务、特殊专用…...