java实现二叉树层次遍历
2014-07-22 08:33
369 查看
public class BSTNode<T extends Comparable<T>> { T key; // 关键字(键值) BSTNode<T> left; // 左孩子 BSTNode<T> right; // 右孩子 BSTNode<T> parent; // 父结点 public BSTNode(T key, BSTNode<T> parent, BSTNode<T> left, BSTNode<T> right) { this.key = key; this.parent = parent; this.left = left; this.right = right; } public T getKey() { return key; } public String toString() { return "key:" + key; } }
层次遍历的算法参考自【编程之美】,源代码中使用了stl的vector实现动态扩展属性,在java里面List的特点很符合要求,故将此处改为ArrayList。
BSTree.java
private void levelOrder(BSTNode<T> tree){ if(tree==null){ return; } ArrayList<BSTNode<T>> list = new ArrayList<BSTNode<T>>();//使用了List的动态扩展 list.add(tree); int cur = 0; int last = 1; //cur小于list.size()时,说明当前层尚未被访问.因此,依次访问cur到last直接的所有节点 //并依次将被访问节点的左右子节点压入list //cur==last,说明该层已被访问完,此时数组中还有未被访问到的节点, while(cur < list.size()){ last = list.size();//记录了当前层最后一个节点的位置。 while(cur < last){ //当当前节点序号小于list中最后一个节点序号时,就输出当前的节点,并把左右节点插入到list中 System.out.print(list.get(cur)+" "); if(list.get(cur).left != null){ list.add(list.get(cur).left); } if(list.get(cur).right != null){ list.add(list.get(cur).right); } cur++;//当前节点遍历完,沿list顺序后移。 } System.out.println(); } } public void levelOrder(){ levelOrder(mRoot); }
public class BSTreeTest { public static void main(String[] args) { BSTree<Integer> test = new BSTree<Integer>(); test.insert(7); test.insert(4); test.insert(5); test.insert(6); test.insert(12); test.insert(10); test.insert(8); test.insert(9); test.insert(11); test.print(); System.out.println("层次遍历"); test.levelOrder(); }
相关文章推荐
- 二叉树的层次遍历----java实现
- java实现二叉树的建立,前中后序遍历,层次遍历,深度,节点个数等
- 二叉树的层次遍历----java实现
- 用java实现二叉树的前序、中序、后序、层次遍历(递归和非递归版)
- 数据结构--java实现二叉树的先序、中序、后序、层次遍历及根据先序中序建立二叉树
- 二叉树的建树、遍历(先序、中序、后序、层次)(递归和非递归)--Java实现
- Java实现二叉树的先序、中序、后序、层次遍历,数的最大深度、最大宽度
- 【LintCode-69】二叉树的层次遍历(Java实现)
- JAVA语言实现二叉树的层次遍历的非递归算法及递归算法。
- 二叉树的遍历-先序中序后序层次(java实现)
- java语言实现二叉树的前序、中序与后序遍历(递归与非递归) 层次遍历
- java 二叉树的实现与先序遍历和层次遍历
- JAVA语言实现二叉树的层次遍历的非递归算法及递归算法
- java实现二叉树的层次遍历
- 二叉树的层次遍历及之形打印算法 Java实现
- 剑指offer之求二叉树的深度(非递归的层次遍历)Java实现
- 二叉树的层次遍历 java实现
- java 实现二叉树的构建,先序,中序,后序,层次,递归,非递归的遍历
- Java二叉树(一)--定义及前序、中序、后序、层次遍历及求高度的实现
- 二叉树建立以及先序、中序、后序、层次遍历(JAVA 实现)