-
基本思想:
利用队列先进先出的特点对二叉树进行存储。
1、让所要遍历的二叉树的根结点入队。
2、判断队不为空时,进入循环,取栈顶元素进打印。
3、若当前结点左孩子存在就让左孩子入队。
4、若当前结点右孩子存在让右孩子入队。
5、队首结点出队。
6、重复1-4步,直到队列为空时遍历结束。 -
具体代码如下:
oid BinaryTreeLevelOrder(BTNode* root) //非递归的层序遍历
{
Queue qu;
BTNode * cur;
QueueInit(&qu);
QueuePush(&qu, root);//根节点入队
while (!QueueIsEmpty(&qu));//队列不为空的时候进入循环
{
cur = QueueTop(&qu);//取队顶打印
putchar(cur->data);
if (cur->lchild)//如果做孩子存在就入队左孩子
{
QueuePush(&qu,cur->lchild);
}
if (cur->rchild)//如果右孩子存在就入队右孩子
{
QueuePush(&qu, cur->rchild);
}
QueuePop(&qu);//根节点出队
}
QueueDestory(&qu);//销毁队列
}