package com.test;
public class BinaryTree {
private BinaryTree lchild;
private BinaryTree rchild;
private Object data;
public BinaryTree(BinaryTree l, BinaryTree r, Object data) {
lchild = l;
rchild = r;
this.data = data;
}
public static void main(String[] args) {
BinaryTree I = new BinaryTree(null, null, 'I');
BinaryTree H = new BinaryTree(null, I, 'H');
BinaryTree G = new BinaryTree(null, null, 'G');
BinaryTree F = new BinaryTree(null, null, 'F');
BinaryTree E = new BinaryTree(F, G, 'E');
BinaryTree D = new BinaryTree(null, null, 'D');
BinaryTree C = new BinaryTree(H, null, 'C');
BinaryTree B = new BinaryTree(D, E, 'B');
BinaryTree A = new BinaryTree(B, C, 'A');
DLR(A);
System.out.println();
LDR(A);
System.out.println();
LRD(A);
System.out.println();
}
// 递归先序遍历
public static void DLR(BinaryTree root) {
if (root == null)
return;
visit(root);
if (root.lchild != null)
DLR(root.lchild);
if (root.rchild != null)
DLR(root.rchild);
}
// 递归中序遍历
public static void LDR(BinaryTree root) {
if (root == null)
return;
if (root.lchild != null)
LDR(root.lchild);
visit(root);
if (root.rchild != null)
LDR(root.rchild);
}
// 递归后序遍历
public static void LRD(BinaryTree root) {
if (root == null)
return;
if (root.lchild != null)
LRD(root.lchild);
if (root.rchild != null)
LRD(root.rchild);
visit(root);
}
public static void visit(BinaryTree bt) {
System.out.print(bt.data + " ");
}
}