java编写二叉树以及前序遍历、中序遍历和后序遍历
2015-07-29 14:45
676 查看
/** * 实现二叉树的创建、前序遍历、中序遍历和后序遍历 **/ package DataStructure; /** * Copyright 2014 by Ruiqin Sun * All right reserved * created on 2014-9-9 下午2:34:15 **/ public class BinTreeInt { private Node root; /** * 创建内部节点类 **/ private class Node{ // 左节点 private Node leftChild; // 右节点 private Node rightChild; // 节点对应的值 private int data; public Node(int data){ this.leftChild = null; this.rightChild = null; this.data = data; } }// class Node public BinTreeInt(){ root = null; } /* *递归的创建二叉树 * */ public void buildTree(Node node ,int data){ if (root == null){// 如果根节点为空,创建根节点 root = new Node(data); }else{ if(data <node.data){//插入到左子树 if(node.leftChild == null){//左节点为空,直接创建值为data的左节点 node.leftChild = new Node(data); }else{//左节点不为空,调用buildTree函数插到左子树中 buildTree(node.leftChild,data); } }else{ if(node.rightChild == null){ node.rightChild = new Node(data); }else{ buildTree(node.rightChild,data); } } } }//end buildTree /* *前序遍历二叉树 * */ public void preOrder(Node node){ if(node != null){ System.out.print(node.data); preOrder(node.leftChild); preOrder(node.rightChild); } } /* *中序遍历二叉树 * */ public void inOrder(Node node){ if(node != null){ inOrder(node.leftChild); System.out.print(node.data); inOrder(node.rightChild); } } /* *后序遍历二叉树 * */ public void postOrder(Node node){ if(node != null){ postOrder(node.leftChild); postOrder(node.rightChild); System.out.print(node.data); } } public static void main(String ars[]){ int[] a={2,4,12,45,21,6,111}; BinTreeInt binTree = new BinTreeInt(); for(int i = 0; i<a.length; i++){ binTree.buildTree(binTree.root, a[i]); } System.out.print("前序遍历"); binTree.preOrder(binTree.root); System.out.println(""); System.out.print("中序遍历"); binTree.inOrder(binTree.root); System.out.println(""); System.out.print("后序遍历"); binTree.postOrder(binTree.root); } }
转载于:http://blog.csdn.net/piaoxue820/article/details/39156649
相关文章推荐
- 使用Eclipse构建Maven项目
- JavaMail开发出现com/sun/mail/util/LineInputStream异常
- 朝花夕拾——Java的内部类
- JFinal和Struts功能特点对比分析
- java在字符串中获取满足正则表达式的字符
- java异常处理机制
- eclipse|studio 导出hprof 后用MAT显示报错Unknown HPROF Version
- Java中关于Arrays.asList方法的深入学习与理解
- java 代码取当月第一天、当年第一天
- Scala和Java的循环性能对比
- Java Process 程序阻塞处理
- eclipse下MAVEN离线环境搭建
- eclipse中导入其他的web工程遇到和解决的问题
- Java爬虫,信息抓取的实现
- 方法级别的java日志输出控制(一)
- 7. 异常处理总结
- java 图形界面 按钮
- 算法(第四版)学习笔记之二分查找的递归与非递归java实现
- eclipse或myEclipse修改jdk版本
- Java程序设计之扑克牌