二叉树的遍历:先序中序后序遍历的递归与非递(3)

  队列实现的基本思路:遍历从根节点开始,首先将根节点入队,然后执行循环:节点出队,访问(访问)根节点,将左儿子入队,将右儿子入队,直到队列为空停止。

  这种遍历方式的结果是将二叉树从上到下,从左至右一层一层的遍历,即层序遍历,代码实现如下:

void LevelOrderTraversal(BinTree BT)
{
    BinTree T;
    Queue Q;    //声明一个队列
    if (BT == NULL)
        return;                //如果树为空,直接返回
    Q = CreatQueue(MAX_SIZE);  //创建并初始化队列
    AddQ(Q, BT);                //将根节点入队
    while (!IsEmpty(Q))
    {
        T = DeleteQ(Q);           ���  //节点出队
        printf("%d\n", T->Data);         //访问出队的节点
        if (T->Left)    AddQ(Q, T->Left);  //若左儿子不为空,将其入队
        if (T->Right)    AddQ(Q, T->Right)  //若右儿子不为空,将其入队
    }
}

理解上述四种二叉树遍历方式后,不妨来小试牛刀:List Leaves, Tree Traversals Again.

二叉树遍历(图解) 

二叉树的常见问题及其解决程序

【递归】二叉树的先序建立及遍历

Java中实现的二叉树结构

【非递归】二叉树的建立及遍历

二叉树递归实现与二重指针

二叉树先序中序非递归算法

轻松搞定面试中的二叉树题目  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2a4d4db5f8eb5a42a430d5ead1b132a0.html