6.2.2 二叉树的基本操作与实现 页码P111
package hicc.ds.c06_bitree;
public class BiTree {
public Object data;
public BiTree lchild;
public BiTree rchild;
public BiTree() {
}
public BiTree(Object data) {
this.data = data;
this.lchild = null;
this.rchild = null;
}
public BiTree(Object data, BiTree lchild, BiTree rchild) {
this.data = data;
this.lchild = lchild;
this.rchild = rchild;
}
public void insertL(Object x, BiTree parent) {
BiTree p = new BiTree(x);
if (parent.lchild == null) {
parent.lchild = p;
} else {
p.lchild = parent.lchild;
parent.lchild = p;
}
}
public void deleteL(BiTree parent) {
if (parent != null) {
parent.lchild = null;
}
}
public void preOrder(BiTree bt) {
if (bt == null) {
return;
}
System.out.println(bt.data + " ");
preOrder(bt.lchild);
preOrder(bt.rchild);
}
public void levelOrder() {
BiTree[] queue = new BiTree[64];
int front = -1;
int rear = 1;
queue[0] = this;
queue[1] = null;
while (front != rear) {
front++;
if (queue[front] == null) {
if (front == rear) {
break;
}
System.out.println();
rear++;
queue[rear] = null;
continue;
}
System.out.print(queue[front].data+" ");
if (queue[front].lchild != null) {
rear++;
queue[rear] = queue[front].lchild;
}
if (queue[front].rchild != null) {
rear++;
queue[rear] = queue[front].rchild;
}
}
System.out.println();
}
static int createIndex = 0;
public static BiTree createBiTree(BiTree t, char[] ch) {
if (ch[createIndex] == '0') {
return null;
} else {
t = new BiTree(ch[createIndex]);
createIndex++;
t.lchild = createBiTree(t, ch);
createIndex++;
t.rchild = createBiTree(t, ch);
return t;
}
}
public static void main(String[] args) {
BiTree B = new BiTree('B', new BiTree('D'), new BiTree('E'));
BiTree C = new BiTree('C', new BiTree('F'), null);
BiTree A = new BiTree('A', B, C);
A.preOrder(A);
A.levelOrder();
}
}