本文结构:基本思路 + 实现代码
-
基本思路:
层序遍历的定义是从根结点开始,按照从上到下,从左到右的顺序访问二叉树的每个结点。
那么具体到某个结点——根结点与它的左、右孩子,根A->左孩子B->右孩子C,下一遍是结点B->左孩子->右孩子->结点C->左孩子->右孩子,以此类推直到访问完全部结点,其过程具有“先进先出”的特点,因此用队列辅助算法的实现。 -
代码实现:
void LevelTravel(BTNode *bt)
{
//采用顺序队
SqQueue *qu
BTNode *p;
InitQueue(qu);
enQueue(qu, bt);
while(!QueueEmpty(qu))
{
deQueue(qu, p);
printf("%c", p->data);
if(p->lchild != NULL)
enQueue(qu, p->lchild);
if(p->rchild != NULL)
enQueue(qu, p->rchild);
}
DestroyQueue(qu);
}