二叉树的层次遍历需要借助环形队列来实现。
二叉树的结点类型如下:
typedef struct node
{
char data;
struct node *left, *right;
}Btnode;
环形队结点类型如下
typedef struct
{
Btnode *data[MaxSize];
int flont, rear;
}SqQueue;
有关二叉树的创建请点击此处。
有关环形队相关操作请点击此处。
层次遍历算法的实现
void LevelOrder(Btnode *b)
{
Btnode *p;
SqQueue *qu;
InitQueue(qu);
enQueue(qu, b);
while (!QueueEmpty(qu))
{
deQueue(qu, p);
cout << P->data;
if (p->left != NULL)
enQueue(qu, p->left);
if (p->right != NULL)
enQueue(qu, p->right);
}
}
层次遍历的过程为先将根结点进队,队不为空时,出队一个结点并访问它,若该结点有左孩子则将左孩子入队,若该结点有右孩子则将右孩子入队,循环操作至队空为止。
---代码和部分内容参考自《数据结构教程》