数据结构之二叉树的遍历,递归算法(Java实现)
public class BiTree {
String data;
BiTree lchild;
BiTree rchild;
BiTree(){
this.data=null;
this.lchild=null;
this.rchild=null;
}
public static void main(String[] args) {
BiTree T=new BiTree();
System.out.println(CreateBiTree(T));
System.out.println("先序遍历");
PreOrder(T);
System.out.println();
System.out.println("中序遍历");
InOrder(T);
System.out.println();
System.out.println("后序遍历");
PostOrder(T);
}
public static int CreateBiTree(BiTree T){
Scanner sc= new Scanner(System.in);
System.out.println("输入:");
String x=sc.next();
if(x.equals("0")){
T=null;
}
if(T!=null){
T.data=x;
BiTree Tl=new BiTree();
T.lchild=Tl;
BiTree Tr=new BiTree();
T.rchild=Tr;
CreateBiTree(T.lchild);
CreateBiTree(T.rchild);
}
return 1;
}
public static void PreOrder(BiTree T){
if(T!=null){
if(T.data!=null){
System.out.print(T.data+" ");
}
PreOrder(T.lchild);
PreOrder(T.rchild);
}
}
public static void InOrder(BiTree T){
if(T!=null){
InOrder(T.lchild);
if(T.data!=null){
System.out.print(T.data+" ");
}
InOrder(T.rchild);
}
}
public static void PostOrder(BiTree T){
if(T!=null){
PostOrder(T.lchild);
PostOrder(T.rchild);
if(T.data!=null){
System.out.print(T.data+" ");
}
}
}
}