#include "malloc.h"
typedef struct BiTNode
{
char data; ;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
if(ch==' ')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void LevelOrder(BiTree T)
{
BiTree a,Q[1000];
int front,rear,level=0;
if(T==NULL)
return;
Q[0]=NULL;
Q[1]=T;
front=0;
rear=2;
while(front!=rear)
{
a=Q[front];
front=(front+1)%1000;
if(a==NULL)
{
if(front==rear)
return;
Q[rear]=NULL;
rear=(rear+1)%1000;
level++;
printf("\n第%d层\n",level);
}
else
{
printf("%c ",a->data);
if(a->lchild!=NULL)
{
Q[rear]=a->lchild;
rear=(rear+1)%1000;
}
if(a->rchild!=NULL)
{
Q[rear]=a->rchild;
rear=(rear+1)%1000;
}
}
}
}
int main()
{
BiTree T;
CreateBiTree(T);
printf("LevelOrder:\n");
LevelOrder(T);
return 0;
}