Java创建二叉树
2015-08-22 17:00
477 查看
//定义一个节点 class BitNode { int data; BitNode lchild; BitNode rchild; public void setNode(int data, BitNode lc, BitNode rc) { this.data = data; lchild = lc; rchild = rc; } } static int counter = 0;//定义一个静态计数变量 /** * 构造二叉树 * * @param root根节点 * @param a数据源 * @param i计数器 * @return 根节点 */ public static BitNode createBiTree(BitNode root, int[] a, int i) { if (i < a.length) { if (a[i] == 0) { root = null; } else { BitNode lchild = new BitNode(); BitNode rchild = new BitNode(); root.data = a[i]; root.lchild = createBiTree2(lchild, a, ++counter); root.rchild = createBiTree2(rchild, a, ++counter); } } return root; } // 访问节点 public static void visitTNode(BitNode node) { System.out.print(node.data + " "); } // 层次遍历 public static void levelTraverse(BitNode root) { Queue<BitNode> queue = new LinkedList<BitNode>(); queue.offer(root);// 从根节点入队列 while (!queue.isEmpty()) {// 在队列为空前反复迭代 BitNode bitNode = queue.poll();// 取出队列首节点 visitTNode(bitNode); if (bitNode.lchild != null) queue.offer(bitNode.lchild);// 左孩子入列 if (bitNode.rchild != null) queue.offer(bitNode.rchild);// 右孩子入列 } } public static void main(String[] args) { BitNode root = new BitNode(); int[] a = { 1, 2, 3, 0, 0, 4, 0, 0, 5, 0, 0 }; root = createBiTree(root, a, counter); levelTraverse(root); }
相关文章推荐
- springmvc学习笔记(八)json传递数据
- Java Map接口HashMap
- 深入理解Java注解(2):高级应用
- java8 函数接口 Predicate例子
- Java中static关键字
- Java Map接口总览
- java maven quartz exampe 实用指南
- 《深入Java虚拟机第二版》读书笔记
- java并发编程---synchronized、Lock
- Java的代理模式
- Eclipse中调试Android技巧
- java中的final关键字所起的作用
- Java进阶06 容器
- 在 Eclipse 下利用 gradle 构建系统
- 迭代(遍历)时候不可以使用集合的remove和add方法,但可使用Java迭代器的remove和add方法
- Java实现单链表的一些常用操作
- 去哪网实习总结:JAVA读XML文件节点信息(JavaWeb)
- swing和java里嵌入浏览器
- struts2学习笔记
- maven:Eclipse使用maven获取spring官网架包