[递归+访问者模式]实现树状结构的节点遍历处理
/*** 把嵌套树结构 Tree 转成 Graph 图结构** @param tree Tree* @return Graph*/public static GraphVO tree2graph(ItemVO tree) {List<EdgeDO> edgeList = new ArrayList<>();buildEdges(tree, edgeList);final List<ItemVO> nodeList = new ArrayList<>();visitTree(tree, t -> {ItemVO node = new ItemVO();BeanUtils.copyProperties(t, node);// 图节点,children 置为空node.children = new ArrayList<>();nodeList.add(node);});GraphVO graph = new GraphVO();graph.setEdgeList(edgeList);graph.setItemList(nodeList);return graph;}/*** 访问者模式,递归遍历树节点** @param t 树节点* @param visitor 访问者*/private static void visitTree(ItemVO t, TreeVisitor visitor) {visitor.visit(t);if (null != t.children) {for (ItemVO child : t.children) {visitTree(child, visitor);}}}
Kotlin 开发者社区
国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。
越是喧嚣的世界,越需要宁静的思考。
[递归+访问者模式]实现树状结构的节点遍历处理相关推荐
- 设计模式学习笔记(六) - 组合模式 Composite (树状结构专用模式)
组合模式 Composite 树状结构专用模式 递归遍历结构
- Java递归子集算法(树状结构)的逻辑和实例代码实现 @杨章隐
Java递归算法(树状结构)的逻辑和实例 1.应用场景: 递归算法作为一个经常使用的算法,无论在API开发还是计算文件夹都是比较常用的, 在api开发过程中我们经常遇到需要返回树状结构的json 例如 ...
- 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...
- file类打印目录---树状结构,递归
package Test; import java.io.File; /** * file类打印目录---树状结构,递归 * @author Administrator * */ public cla ...
- 实现树状结构_组合模式 - 树状结构的优雅实现
在编程实践中,经常会遇到树状结构的场景,比如我们的浏览器窗口,比如文件系统. 那么,在处理树状结构的时候有什么较好的方式呢? 现在,我们就来学习一种利用组合模式的方法. 如上图所示,我们通过程序输出的 ...
- Stream流实现Tree树状结构无限递归
Stream流实现Tree树状结构无限递归 场景:在使用mybatis plus操作多层数据格式,多层遍利操作影响数据查询效率 代码 例子:需要返回给前端多级菜单 省(直辖市)/市/区(县) /*** ...
- 数据库树状结构的关系表的删除方案
所谓的树状结构的关系,即是记录之间有id,parentId关系的数据.场景是这样的:业务中用到了一张分享表,表里的主要字段有分享人,和被分享人,以及分享任务ID,可以通过一系列的分享构造成树状的结构, ...
- 从装备合成谈树状结构的应用
源码下载: 链接: https://pan.baidu.com/s/1DucpIik596W1pkY09FjUew 提取码: n8mq 其中有个文件"类的功能介绍.txt",介绍了 ...
- 用中值排序基数法实现树状结构 (转)
在BBS的编写中,经常有人问怎样实现树状结构?一个比较不负责任的回答是:使用递归算法.当然,递归是一个可行的办法 (二叉树的历遍也好象只能使用递归算法),但对于BBS来说,这样做势必要进行大量的Sql ...
最新文章
- 一些少见的下载地址(按需求更新)
- 数据结构与算法:二分法
- [Solved] UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte
- 长期价值三重进阶,同程艺龙加速“破局”OTA
- ccna学习笔记之五:路由器密码恢复
- python - 定时拍照并发送到qq
- 在ASP.NET Core中使用EPPlus导入出Excel文件
- 解决方案:超卖(Redis原子队列)
- py2neo database
- 鸿蒙官网什么样,鸿蒙系统推广,结果会怎么样?
- idhttp返回乱码_node.js http.get请求返回的中文乱码, iconv zlib模块都不好使,求解决!!!...
- BAT批处理整人代码
- 鼠标悬停在HTML-TABLE的某一行上 改变这一行的背景颜色
- 如何开展o2o营销活动?
- 电脑删除的文件如何找回?找回删除的文件有3个方法…
- 1002:方便记忆的电话号码
- 人工智能重新定义管理
- github新手入门
- 电子墨水屏标签:低功耗处理器技术
- 10.业余无线电术语
热门文章
- mmdetection-inference-画出bbox和mask
- ata计算机考试第一套,计算机ATA考试中级第一套试题配套素材.doc
- 【物联网树莓派毕设04】Arduino实现电梯及人脸识别门禁
- 阿piu传-文档批量上传客户端-原创力版使用帮助
- 计算机应用在医学领域有哪些,计算机在医学领域的应用|网络安全技术
- Java安装 jdk环境配置
- 指纹识别综述(10): 深度学习方法
- Physical CPU、Logical CPU、Core、Thread、Socket
- 高温高湿环境人体热负荷预警仿真模型
- 管理:身先士卒是必要的手段