#include <stdio.h>
#include <stdlib.h>
#include "bitree.h"
#include "linkqueue.h"
void LevelOrderTraverse(BiTree T,void(*Visit)(TElemType));
int main()
{
BiTree T;
CreateBiTree(T);
printf("层序遍历为:");
LevelOrderTraverse(T,visit);
DestoryBiTree(T);
return 0;
}
void LevelOrderTraverse(BiTree T,void(*Visit)(TElemType))
{ // 初始条件:二叉树T存在,Visit是对结点操作的应用函数
// 操作结果:层序递归遍历T(利用队列),对每个结点调用函数Visit一次且仅一次
/********** Begin **********/
LinkQueue q;
QElemType a;
if(T){
InitQueue(q);
EnQueue(q,T);
while(!QueueEmpty(q)){
DeQueue(q,a);
Visit(a->data);
if(a->lchild)
EnQueue(q,a->lchild);
if(a->rchild)
EnQueue(q,a->rchild);
}
printf("\n");
}
// LinkQueue q;
// QElemType a;
// if(T){
// InitQueue(q);
// EnQueue(q,T);
// while(!QueueEmpty(q)){
// DeQueue(q,a);
// Visit(a->data);
// if(a->lchild)
// EnQueue(q,a->lchild);
// if(a->rchild)
// EnQueue(q,a->rchild);
// }
// printf("\n");
// }
/********** End **********/
}