使用递归算法实现树结构
来源:互联网 发布:流星网络电视下载安装 编辑:程序博客网 时间:2024/06/05 20:19
新项目需要用到左侧菜单栏的遍历效果
所以自己研究写了一个递归实现树结构的工具类
后台正常查询数据集合,不过因为是树结构,必须要有关联关系的字段
代码注释中会写细节部分,如下:
/**
* 递归实现树形工具类
*/
public class TreeUtils {
/**
* 构建树形模型
* data:查询到的集合,可以是实体类类型
*/
public static List<Menus> buildTreeModel(List<Menus> data) {
/* 返回的树形结构 */
List<Menus> returnTree = new ArrayList<Menus>();
for (Menus ms : data) {
/* 添加根节点,(默认0是根节点,可以根据自己需求设定) */
if (ms.getPid() == 0) {
returnTree.add(findAllChildren(ms, data));
}
}
return returnTree;
}
/**
* 根据跟节点查询子节点
* rootNode:根节点
* data:所有数据
*/
public static Menus findAllChildren(Menus rootNode, List<Menus> data) {
for (Menus children : data) {
/* 如果根节点的ID等于所有数据里节点的父ID */
if (rootNode.getId() == children.getPid()) {
/* 默认为空,先放空集合 */
if (rootNode.getChildren() == null) {
rootNode.setChildren(new ArrayList<Menus>());
}
/* 递归添加子节点 */
rootNode.getChildren().add(findAllChildren(children, data));
}
}
return rootNode;
}
}
Menus泛型为左侧菜单的集合,对应数据库中的表
表中必须要有id、name、pid主要字段(其余字段按个人需求加)
实体类里同样,但要多加一个List<Menus> children,来作为子节点添加
可以根据最后返回的结果用JSON测试下看看是不是树结构类型
- 使用递归算法实现树结构
- 递归算法 实现树结构
- 使用递归算法实现汉诺塔
- ASP.NET使用递归算法实现画树程序
- [Sql Server2008]树结构的递归算法
- C/C++ 使用递归算法实现汉诺塔
- C/C++ 使用递归算法实现汉诺塔
- 使用递归实现全排列的算法
- 编写n的阶乘的递归算法和利用栈结构的非递归实现算法
- 分别使用递归和非递归实现二分查找算法
- 使用递归算法结合数据库解析成java树形结构
- 使用递归算法结合数据库解析成java树形结构
- 使用递归算法结合数据库解析成java树形结构
- 使用递归算法结合数据库解析成java树形结构
- 使用递归算法结合数据库解析成java树形结构
- 使用递归算法结合数据库解析成java树形结构
- 树形结构递归实现
- 使用递归结合TreeView完成树结构
- RN入门练习Demo
- nginx 403错误解决方法
- Android集成环信EaseUI混淆打包后遇到的问题
- 计算几何之半平面交算法模板及应用
- 学生管理系统Demo
- 使用递归算法实现树结构
- 微信小程序 --- 点击图片预览出现编辑器空白BUG
- tp5分页去除重复值
- Ubuntu上交叉编译valgrind for Android 4.4的过程与注意事项
- 【C++】去除排序数组中重复的元素
- appium+python学习笔记之使用HTMLTestRunner.py生成测试报告
- Sublime Text3 3143 注册码,亲测可用!
- 深度学习之基础模型-Xception
- 微信小程序在开发工具预览的圆角模糊效果在ios手机中不能使用