package it.cast;
import java.util.List;
public class BTree {
private BTree leftChild;
private BTree rightChild;
private BTree root;
private Object data;
public BTree(BTree leftChild, BTree rightChild, Object data) {
this.leftChild = leftChild;
this.rightChild = rightChild;
this.data = data;
}
// 创建构造方法,用于接收BTree中的数据
public BTree(Object data) {
this(null, null, data);
}
public BTree() {
}
// 创建树
public void CreateBtree(Object[] obj) {
BTree[] b = new BTree[obj.length];
for (int i = 0; i < obj.length; i++) {
BTree ss = new BTree(obj[i]);// 将数据封装成树节点
b[i] = ss;// 传入数组中
}
root = b[0];// 将第一个数放入根节点中
// 按左右的循序放入节点
for (int i = 0; i < b.length / 2; i++) {
// 奇数位的数据放入左节点中
b[i].leftChild = b[2 * i + 1];
if (2 * i + 2 < b.length) {// 判断偶数位是否溢出
b[i].rightChild = b[2 * i + 2];
}
}
}
//先序遍历
public void preorder(BTree b) {
if (b != null) {
visit(b.getData());
preorder(b.leftChild);
preorder(b.rightChild);
}
}
//中序遍历
public void middens(BTree b) {
if(b!=null) {
middens(b.leftChild);
visit(b.getData());
middens(b.rightChild);
}
}
//后序遍历
public void After(BTree b) {
if(b!=null) {
After(b.leftChild);
After(b.rightChild);
visit(b.getData());
}
}
private void visit(Object data2) {
System.out.print(data2 + " ");
}
private Object getData() {
return data;
}
private BTree getRoot() {
return root;
}
public static void main(String[] args) {
BTree b = new BTree();
Object[] obj = { 0, 1, 2, 3, 4, 5, 6, 7 };
b.CreateBtree(obj);
b.preorder(b.getRoot());
System.out.println();
b.middens(b.getRoot());
System.out.println();
b.After(b.getRoot());
}
}