利用队列的先进先出,把根的节点的指针存到队列中,然后再出队列,在出队列时再把他的左右子树的节点指针带进去,循环到队列为空(树也就遍历完了)

void LevelOrder(BTNode* root)//层序遍历
{
Queue L;//定义一个队列的变量
QueueInit(&L);//初始化队列
if (root)
{
QueuePush(&L, root);//把根节点的指针存入到队列中
}
while (!QueueEmpty(&L))
{
BTNode* front = QueueFront(&L);//把队列的头元素去出来,定义一个变量接收
printf("%d ",front->val);//打印头元素指针指向的那个节点的值
QueueBack(&L);
if (front->left)
{
QueuePush(&L, front->left);
}
if (front->right)
{
QueuePush(&L, front->right);
}
}
printf("\n");
}