本篇介绍的方法,参考了网上的代码。
在递归过程中,计算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

最新文章

  1. CALayer anchorPoint 锚点始终为(0,0)
  2. UBUNTU中如何获得root权限
  3. 基于SpringMVC框架项目Demo
  4. 提升GDI画图的效率
  5. Freemarker 对null值报错的处理
  6. redis 集群
  7. 获得树形json串
  8. spring常规任务(轻便易)
  9. 转载 iOS拦截导航栏返回按钮事件的正确方式
  10. js获取对象长度和名称
  11. Linux显示历史记录
  12. 16.app后端如何保证通讯安全--url签名
  13. Dictionary与SortedDictionary
  14. 步步为营-73-asp.net的简单练习(根据美工提供静态页面,编写后台代码)
  15. SQL语句中LEFT JOIN、JOIN、INNER JOIN、RIGHT JOIN的区别?
  16. Codeforces Round #404 (Div. 2) C. Anton and Fairy Tale 二分
  17. ios中自定义图层
  18. Python:slice与indices
  19. ubuntu16.04服务器apache的ssl证书配置
  20. Codeforces Round #287 (Div. 2) A. Amr and Music 水题

热门文章

  1. VPS的centOS6安装远程桌面
  2. Undo表空间数据文件损坏
  3. RMAN异机复制数据库(相同路径)
  4. python3 pygame 坦克自动移动
  5. [求助]linux同一目录可否挂载多个数据盘?
  6. 关于Altium Designer中的搜索图纸上的元件
  7. The behavior of App killed or restored by Android System or by users
  8. Centos配置java环境
  9. SIP对话、事务详解
  10. Effective C++ 条款28