二叉树利用队列按层次遍历算法如下:
void levelorder(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];
visit(p);
if(q->lchild != NULL){
rear = (rear+1)%maxsize;
que[rear] = q->lchild;
}
if(q->rchild != NULL){
rear = (rear+1)%maxsize;
que[rear] = q->rchild;
}
}
}
}