#include <iostream>
#include<cstdio>
#include<cstdlib>
#define maxsize 100
using namespace std;
typedef struct BTnode{
int data;
struct BTnode *lchild;
struct BTnode *rchild;
}BTnode;
BTnode* createTree()
{
BTnode *p;
int ch;
cin>>ch;
if(ch == 0) //如果到了叶子节点,接下来的左、右子树分别赋值为0
{
p = NULL;
}
else
{
p = (BTnode*)malloc(sizeof(BTnode));
p->data = ch;
p->lchild = createTree(); //递归创建左子树
p->rchild = createTree(); //递归创建右子树
}
return p;
}
void level(BTnode *p)
{
int front,rear;
BTnode *que[maxsize];
front=rear=0;
BTnode *q;
if(p!=NULL)
{
rear=(rear+1)%maxsize;
que[rear]=p;
while(front!=rear)
{
front=(front+1)%maxsize;
q=que[front];
cout<<q->data<<" ";
if(q->lchild!=NULL)
{
rear=(rear+1)%maxsize;
que[rear]=q->lchild;
}
if(q->rchild!=NULL)
{
rear=(rear+1)%maxsize;
que[rear]=q->rchild;
}
}
}
}
int main()
{
BTnode *shu=NULL;
shu=createTree();//1 2 4 8 0 0 0 5 0 0 3 6 0 0 7 0 0
level(shu);
return 0;
}