#include <stdio.h>
#include <stdlib.h>
#define MAX 20
#define NULL 0
typedef char TElemType;
typedef int Status;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree *T){
char ch;
ch=getchar();
if(ch=='#') (*T)=NULL;
else{
(*T)=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
return 1;
}
void InOrder(BiTree T)
{ int top=0;
BiTree p,s[MAX];
p=T;
while(top>=0)
{ if(p)
{s[top]=p;
top++;
p=p->lchild;
}
else
{p=s[--top];
printf("%d\t",p->data);
p=p->rchild;
}
}
}
void LevleOrder(BiTree T){
BiTree Queue[MAX],b;
int front,rear;
front=rear=0;
if(T){
Queue[rear++]=T;
while(front!=rear){
b=Queue[front++];
printf("%2c",b->data);
if(b->rchild!=NULL)Queue[rear++]=b->lchild;
if(b->rchild!=NULL)Queue[rear++]=b->rchild;
}
}
}
void PostOrder(BiTree T)
{ if(T)
{ PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
main(){
BiTree T=NULL;
printf("\nCreate a Binary Tree\n");
CreateBiTree(&T);
printf("\n The Inorder is:\n");
INOrder(T);
printf("\nThe level order is:\n");
LevleOrder(T);
}