层序遍历二叉树
从根节点开始,从左到右,从上到下,依次输出节点的值,先进先出的典型,创建队列,根节点入队,指针指向队列的第一个元素,输出,出队,若指针指向的(队列的第一个元素)的左子树不为空,则使他入队,同样判断右子树,循环直到队列为空。
队列的数据是指向节点的指针比较方便操作
typedef struct{
BiTree * base;//存放指针比较方便
int front;
int rear;
}SqQueue;
void level_travel(BiTree T,SqQueue * Q){
Enqueue(Q,T);
BiTree e;
int tag=0;
while((*Q).front!=(*Q).rear){
BiTree r = (*Q).base[(*Q).front];
printf("%d ",(*r).data);
DeQueue( Q, e);
if((*r).lchild!=NULL)
Enqueue(Q,(*r).lchild);
if((*r).rchild!=NULL)
Enqueue(Q,(*r).rchild);
}
}