利用队列的先进先出,把根的节点的指针存到队列中,然后再出队列,在出队列时再把他的左右子树的节点指针带进去,循环到队列为空(树也就遍历完了)
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");
}