简洁常用权限系统的设计与实现(六):不维护节点的深度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

转载于:https://www.cnblogs.com/qitian1/p/6463013.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值