首先定义结点类 class Node:
public class Node {
public Integer value =null;
public Node leftchild=null;
public Node rightchild =null;
public Node parent=null;
}
然后定义二叉树类 class Btree :
public class Btree {
private Node root = null;
// 二叉树的三种遍历,用递归实现
//先序遍历
public void preTravel() {
System.out.println("先序遍历");
this.pretravel(this.root);
}
private void pretravel(Node p) {
if (p == null);
else {
//先输出根
System.out.println(p.value);
//再输出左孩子
if (p.leftchild != null)
this.pretravel(p.leftchild);
//最后输出右孩子
if (p.rightchild != null)
this.pretravel(p.rightchild);
}
}
//中序遍历
public void inTravel() {
System.out.println("中序遍历");
this.intravel(this.root);
}
private void intravel(Node p) {
if (p == null);
else {
//先输出左孩子
if (p.leftchild != null)
this.intravel(p.leftchild);
//再输出根
System.out.println(p.value);
//最后输出右孩子
if (p.rightchild != null)
this.intravel(p.rightchild);
}
}
//后序遍历
public void postTravel() {
System.out.println("后序遍历");
this.posttravel(this.root);
}
private void posttravel(Node p) {
if (p == null) ;
else {
//先输出左孩子
if (p.leftchild != null)
this.pretravel(p.leftchild);
//再输出右孩子
if (p.rightchild != null)
this.pretravel(p.rightchild);
//最后输出根
System.out.println(p.value);
}
}
最后是定义主函数类 class Main :
public class Main {
public static void main(String[] args) {
Btree b =new Btree();
Integer[] data={3,2,5,4,8,7,9};
for(Integer i=0;i<data.length;i++){
b.insert(data[i]); / /inser函数的定义在上一篇博客中,其链接为:点击打开链接
}
b.preTravel();
b.inTravel();
b.postTravel();
}
}