//二叉树层次遍历 //类型定义 typedef struct{ BTNode data[MaxSize]; //存放队列中元素(元素为BTNode类型) int head, rear; //分别指向队头元素和队尾元素的下一个元素 }SqQueue; //顺序循环队列类型
//二叉树层次遍历算法 void LevelOrder(BTNode *b){ BTNode *p; //定义二叉树节点游标 SqQueue *qu; InitQueue(qu); //初始化队列 InQueue(qu, b); //根节点进入队列 while(!QueueEmpty(qu)){ //队列不为空,则循环 OutQueue(qu, p); //出队列节点 printf("%c", p->data); //打印节点数据域 if(p->lchild != NULL){ //有左孩子时将其入队 InQueue(qu, p->lchild); } if(p->rchild != NULL){ //有右孩子时将其入队 InQueue(qu, p->rchild); } } }