层序遍历,顾名思义就是按照每一层的顺序从左至右打印二叉树。
有二种算法实现此功能,我们重点讲如何用队列实现
void FloorOrderTraverse(Sequeue &S,BinTree &B)
{
BinTree e;
if (B != NULL)
{
Enqueue(Q, B); //头结点入队
}
while (IsEmptyQueue(Q) != 1)
{
cout << Q.base[Q.front]->data << " ";
DeQueue(Q, B); //打印之后需要出队,否则会循环一次
if (B->lchild != NULL)
{
Enqueue(Q, B->lchild);
}
if (B->rchild != NULL)
{
Enqueue(Q, B->rchild);
}
}
}