基于jdk的list 和 队列 linkedList 和父亲长子兄弟链表模型 实现的 树 的前序遍历,后序遍历和层次遍历
2015-04-01 10:53
721 查看
树的简单遍历算法 利用jdk里的list和队列实现。后面自己再写队列 和 list的实现
package Tree; import java.util.LinkedList; import java.util.List; import java.util.Queue; /** * 基于jdk的list 和 队列 linkedList 和父亲长子兄弟链表模型 实现的 树 的前序遍历,后序遍历和层次遍历 * 树的遍历算法的时间复杂度是O(N) */ public class IteratorTree { private List<TreeLinkedListNode> list; // 树的先序遍历 public void elementpreorderIterator(TreeLinkedListNode tree) { if (tree == null) return; // 递归基 TreeLinkedListNode subtree = tree.getFirstChild(); list.add(tree);// 输出当前节点 while (subtree != null) { this.elementpreorderIterator(subtree);// 递归对这个点进行先序遍历 subtree = subtree.getNextSubling(); } } // 后序遍历 public void elementLastIterator(TreeLinkedListNode tree) { if (tree == null) { return;// 递归基 } TreeLinkedListNode subtree = tree.getFirstChild(); while (subtree != null) { this.elementLastIterator(subtree); subtree = subtree.getNextSubling(); } list.add(subtree);// 输出 } // 层次遍历 依靠队列实现 没当输出一个节点,就把其节点的孩子及孩子的兄弟放到队列 public void levelIterator(TreeLinkedListNode tree) { if (tree == null) return;// 递归基 Queue<TreeLinkedListNode> queue = new LinkedList<TreeLinkedListNode>();// 先用一下java自带的队列 // 之后自己写队列 queue.add(tree);//根入队 while (!queue.isEmpty()) { TreeLinkedListNode t = queue.poll();// 获取并移除第一个元素 list.add(t); TreeLinkedListNode subling = tree.getNextSubling(); while (subling != null) { queue.add(subling);//从第一个孩子开始,依次入队知道兄弟为空 对于根来说,就是将所有孩子入队 subling = subling.getNextSubling(); } } } }
相关文章推荐
- 基于 链表法 父亲长子兄弟模型树的实现 -java
- 基于LinkedList实现栈和队列
- Java Collections Framework之Deque(LinkedList实现)源码分析(基于JDK1.6)(已补充)
- Java:基于LinkedList实现栈和队列
- leetcode_107. Binary Tree Level Order Traversal II 二叉树层次遍历,利用python的list特性实现队列功能
- Java:基于LinkedList实现栈和队列
- Java:基于LinkedList实现栈和队列
- JAVA学习笔记(十)基于LinkedList实现栈和队列
- Android版数据结构与算法(三):基于链表的实现LinkedList源码彻底分析
- Java Collections Framework之Queue(LinkedList实现)源码分析(基于JDK1.6)
- C++实现单链表(Singly-Linked List)追加、遍历、删除
- 实现一个基于LinkedList的队列数据结构,去除ArrayList集合中重复的元素,
- Java:基于LinkedList实现栈和队列
- LinkedList链表实现队列应用的简单实例
- Java:基于LinkedList实现栈和队列
- 用结点实现链表LinkedList,用数组和结点实现栈Stack,用数组和结点链表实现队列Queue
- c# collections linkedlist 链表的遍历
- 用LinkedList实现队列和堆栈的数据结构
- LinkedList源码解析(基于JDK1.7)
- 树的前序遍历,中序遍历,后序遍历,层次(广度)遍历