#include<stdio.h>
#include<stdlib.h>
typedef struct Tree{
int Data;
struct Tree *Left;
struct Tree *Right;
}tree,*Tree;
typedef struct Queue{
Tree font[50];
int i; //队头
int j; //队尾
}Que;
//建立队
Que *Qcreate(){
Que *p;
p=(Que*)malloc(sizeof(Que));
p->i=0;
p->j=0;
return p;
}
//入队
void enqueue(Que *p,tree *s){
p->i++;
p->font[p->i%50]=s;
}
//出队
tree *dequeue(Que *p){
p->j++;
return p->font[p->j%50];
}
//判断空
int IsEmpty(Que *p){
if(p->i==p->j)
return 0;
return 1;
}
//建立树
tree *Create(tree *L){
int i;
scanf("%d",&i);
if(i==-1){
L=NULL;
}else{
L=(tree*)malloc(sizeof(tree));
L->Data=i;
L->Left=Create(L->Left);
L->Right=Create(L->Right);
}
return L;
}
void look(tree *L){
tree *s;
Que *p;
p=Qcreate();
if(!L)return;
enqueue(p,L);
while(IsEmpty(p)){
s=dequeue(p);
printf("%d ",s->Data);
if(s->Left)enqueue(p,s->Left);
if(s->Right)enqueue(p,s->Right);
}
}
int main()
{
tree *L;
L=NULL;
L=Create(L);
look(L);
return 0;
}
采用的是递归创建树,只是初步的完成遍历,队列的出队入队等细节问题还没有具体写出来。