简洁常用权限系统的设计与实现(六):不维护节点的深度level,手动计算level,构造树 (把一颗无序的树,变成有序的)
2024-09-05 20:16:04
本篇介绍的方法,参考了网上的代码。
在递归过程中,计算level,是受到了这种方法的启发。
在递归过程中,计算level,是受到了这种方法的启发。
CSDN上有篇关于树的算法,目标是把一个无序的树,变成有序的。
我看了下代码,并运行了下,感觉是可行的。
我在想,既然可以把一棵树完整的遍历下来,那么应该可以知道每个节点的深度level。尝试了下,证明可行。
但是,我最终对比本篇的方法,和第5篇中的方法,基本一致。不同的地方是,这篇保存了遍历的顺序,实现了把无序的树变成有序的。
之所以第5篇和第6篇,分成2篇,是因为我自己原创的和借鉴别人的,还是分开比较好,但是最终“殊途同归” 。
// 向新list中装入根节点并递归子节点
public static List<TreeNode> traverseRootNode(List<TreeNode> treeList) {
List<TreeNode> rootNode = TreeMenuUtil.findTopLevelList(treeList);
for (int i = 0; i < rootNode.size(); i++) {
level = 1;
TreeNode root = rootNode.get(i);
root.level = level;
newList.add(root);
sortNode(root, treeList);
}
return newList;
} // 递归子节点
private static List<TreeNode> sortNode(TreeNode rootNode,
List<TreeNode> treeList) {
List<TreeNode> childList = TreeMenuUtil
.findAllChild(rootNode, treeList);
level++;
if (childList != null) {
int size = childList.size();
for (int i = 0; i < size; i++) {
TreeNode treeNode = childList.get(i);
newList.add(treeNode);
treeNode.level = level;
sortNode(treeNode, treeList);
}
}
level--;
return childList;
}
原文首发:http://fansunion.cn/article/detail/574.html
最新文章
- CALayer anchorPoint 锚点始终为(0,0)
- UBUNTU中如何获得root权限
- 基于SpringMVC框架项目Demo
- 提升GDI画图的效率
- Freemarker 对null值报错的处理
- redis 集群
- 获得树形json串
- spring常规任务(轻便易)
- 转载 iOS拦截导航栏返回按钮事件的正确方式
- js获取对象长度和名称
- Linux显示历史记录
- 16.app后端如何保证通讯安全--url签名
- Dictionary与SortedDictionary
- 步步为营-73-asp.net的简单练习(根据美工提供静态页面,编写后台代码)
- SQL语句中LEFT JOIN、JOIN、INNER JOIN、RIGHT JOIN的区别?
- Codeforces Round #404 (Div. 2) C. Anton and Fairy Tale 二分
- ios中自定义图层
- Python:slice与indices
- ubuntu16.04服务器apache的ssl证书配置
- Codeforces Round #287 (Div. 2) A. Amr and Music 水题