• 简洁常用权限系统的设计与实现(六):不维护节点的深度level,手动计算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
  • 相关阅读:
    随笔53 java存在继承关系的类之间的调用
    Servlet 与 CGI 的比较
    Angularjs导出数据到Excel
    JavaScript获得当前月份起止日期
    const与let
    JS判断浏览器类型及版本号(Web端)
    JSON怎么添加注释
    CSS中的特殊的选择器
    CSS界面友好显示的小技巧
    CSS3使用弹性盒子模型定义布局
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463012.html
Copyright © 2020-2023  润新知