#什么是层序遍历
从根开始,从上到下,从左到右依次访问。这种访问方式就是层序遍历。
#层序遍历的实现
层序遍历需要借助队列结构实现。
至于什么是队列:【C】栈和队列-CSDN博客
我门先将A的节点放到队列中,再访问队头(A)的左右节点,再将队头的左右节点放入队列,最后删除队头。
反复执行访问队头,入队头左右节点,删除队头的操作。直到队列为空。
此时我们就达成了层序遍历,遍历到ABCDEF。
代码(没有队列的实现代码):
void BinaryTreeLevelOrder(BTNode* root)
{
assert(root);
Queue q;
QueueInit(&q);
QueuePush(&q, root);
while (QueueEmpty(&q)!=0)
{
printf("%c ", QueueFront(&q)->_data);
if (root->_left != NULL)
{
QueuePush(&q, root->_left);
}
if (root->_right != NULL)
{
QueuePush(&q, root->_right);
}
QueuePop(&q);
if (QueueEmpty(&q)!=0)
{
root = QueueFront(&q);
}
}
QueueDestroy(&q);
}