层序遍历代码思路
借助一个辅助队列。
- 先将二叉树的根结点入队,
- 然后出队,访问出队结点,
- 若它有左子树,则将左子树根节点入队;
- 若它有右子树,则将右子树根节点入队。
- 然后出队,
- 访问出队结点……如此反复,直到队列为空
void LevelOrder(BiTree T)
{
InitQueue(&Q); // 初始化辅助队列
BiTree p;
EnQueue(&Q, T); // 将根节点入队
while(!IsEmpty(Q)) // 队列不空则循环
{
DeQueue(Q, p); // 队头结点出队
visit(p);
if (p->lchild != NULL)
{
EnQueue(Q, p->lchild); // 左子树不空,则左子树根节点入队
}
if (p->rchild != NULL)
{
EnQueue(Q, p->rchild); // 右子树不空,则右子树根节点入队
}
}
}
实现过程
根据上面的代码思路,需要实现两个数据结构,一个二叉树,一个队列,需要实现的功能有
- 二叉树、队列的数据结构定义
- 二叉树的创建、队列的初始化
- 二叉树的层序遍历、队列的出队、入队操作
代码实现

#include <stdio.h>

最低0.47元/天 解锁文章
3060

被折叠的 条评论
为什么被折叠?



