思想:其实是利用队列,先将根节点入队,输出根节点信息,出队前将该根节点的左孩子和右孩子(如果有)入队。当队列是空时,遍历完二叉树。
代码:
//层次遍历二叉树
void Print_Tree(Tree T)
{
if(T==NULL)
return ;
Tree s=T;
int head,last;//队头指针,对尾指针
head=0;last=1;
queue[0]=s;
while(head!=last)
{
putchar(queue[head]->c);//输出根节点信息
if(queue[head]->lchild!=NULL)//左孩子不为空,入队
{
queue[last]=queue[head]->lchild;
last=(last+1)%MAXSIZE;
}
if(queue[head]->rchild!=NULL)//右孩子不为空,入队
{
queue[last]=queue[head]->rchild;
last=(last+1)%MAXSIZE;
}
//该节点访问完毕,出队
head=(head+1)%MAXSIZE;
}
}