1.创建一个循环队列
2.定义应该临时指针p,用于遍历
3.树根入队
4.p指向队头,读出对头,队头出队
4.左子树,右子树入队
5.循环自到队空
void LevelTraverse(BiTree T) //层次遍历 { if(T == NULL) return; BiTNode *queue[Maxsize]; //创建应该队列 int front = 0; int rear = 0; BiTNode *p; rear = (rear + 1)%Maxsize; //树根入队 queue[rear] = T; while(front != rear) { front = (front + 1) % Maxsize; //p指向对头,读出队头,并出队 p = queue[front]; printf("%c",p->data); //printf("front: %d ",front); if(p->lchild != NULL) //左子树不为空,入队 { rear = (rear + 1) % Maxsize; queue[rear] = p->lchild; } if(p->rchild != NULL) //右子树不为空,入队 { rear = (rear + 1) % Maxsize; queue[rear] = p->rchild; } } }