二叉树的层次遍历

二叉树的基础操做总结
https://blog.csdn.net/hansionz/article/details/81908134
队列的基础操做总结
https://blog.csdn.net/hansionz/article/details/81636644web


层次遍历

层次遍历,就是从上到下一层一层的遍历
例如:这里写图片描述svg


思路:

这里写图片描述

代码实现
void BinaryTreeLevelOrder(BTNode* root)
{
    Queue q;
    //树为空,直接返回
    if (root == NULL)
    {
        return;
    }
    QueueInit(&q);
    //先将根节点入队
    QueuePush(&q, root);
    while (QueueEmpty(&q))
    {
        //出队保存队头并访问
        BTNode* front = QueueFront(&q);
        printf("%c", front->_data);
        QueuePop(&q);
        //将出队结点的左子树根入队
        if (front->_left)
            QueuePush(&q, front->_left);
        //将出队结点的右子树根入队
        if (front->_right)
            QueuePush(&q, front->_right);
    }
}