//非递归按层次遍历二叉树
算法思想:按层次遍历需要一个队列,开始将二叉树的头结点入队,
然后每次从队列中删除一个节点并输出节点信息,接下来把它的非空
左右孩子入队,下一个输出的位它的右面堂兄弟或兄弟节点信息,在把它的
左右孩子入队,这两个孩子在上面两个孩子的后面(紧跟其后)
这样当队列为空时算法结束
注意:要声明全局变量数组与front 和 rear
void lever_oder(bitree* t)
{
bitree* p;
bitree* delete_queue();
void enter_queue(t);
if(t != NULL)
{
enter_queue();
while(front != rear)
{
p = delete_queue();
printf("%d\t",p->data);
if(p->lchild != NULL)
enter_queue(p->lchild);
if(p->rchild != NULL)
enter_queue(p->rchild);
}
}
}
void enter_queue(bitree* t)
{
if(front != (rear+1)%max)
{
rear = (rear+1)%max;
queue[rear] = t;
}
}
void delete_queue()
{
if(front == rear)return NULL;
front = (front + 1)%max;
return queue[front];
}