美文网首页数据结构
数据结构题目43:二叉树的层次遍历(非递归)

数据结构题目43:二叉树的层次遍历(非递归)

作者: 玲儿珑 | 来源:发表于2020-05-11 19:10 被阅读0次

题目:若二叉树为二叉链表存储结构,写出二叉树的层次遍历的非递归算法。

解题思路:算法中采用一个顺序存储结构队列QUEUE0..M-1,front与rear分别为队头指针和队尾指针。遍历之前先把二叉树根结点的存储地址进队,然后依次从队列中退出一个元素;每退出一个元素,先访问该元素所指的结点,然后依次把该结点的左孩子结点(若存在的话)与右孩子结点(若存在的话)的地址依次进队。如此重复下去,直到队列为空。此时,访问结点的次序就是按层次遍历该二叉树的次序。

具体算法如下:
这里使用到建立二叉树方法createBT(strBT)

function layerOrder(BT) {
    let queue=new Array(MaxSize), p, front, rear
    if ( BT!=null ) {
        queue[0] = BT
        front = -1
        rear = 0
        while ( front<rear ) {
            p = queue[++front]
            console.log(p.data)
            if ( p.lchild!=null ) {
                queue[++rear] = p.lchild
            }
            if ( p.rchild!=null ) {
                queue[++rear] = p.rchild
            }
        }
    }
}

var strBT="A(B(D,E(G)),C(F(,H)))@"
var BT = createBT(strBT)
layerOrder(BT)

相关文章

  • 二叉树遍历java,非递归、层次。

    /** * 前序遍历 * 递归 */ /*** 前序遍历* 非递归*/ 后续遍历非递归 二叉树层次遍历基于java...

  • 二叉树的四种遍历方法

    二叉树的数据结构 1、前序遍历(递归) 2、中序遍历(递归) 3、后序遍历(递归) 4、层次遍历(队列)

  • 二叉树

    结构体 创建二叉树 递归遍历 栈操作 非递归遍历 层次遍历 完整代码

  • 二叉树遍历

    先序遍历——[递归、非递归] 中序遍历——[递归、非递归] 后序遍历——[递归、非递归] 层次遍历——[递归、非递归]

  • 二叉树遍历

    二叉树遍历(非递归写法) 先序遍历 中序遍历 后序遍历 层次遍历 给定一个二叉树,返回其按层次遍历的节点值。 (即...

  • Java二叉树的遍历

    Java二叉树的遍历 利用递归和非递归实现二叉树的先序,中序,后序遍历以及使用队列实现二叉树的层次遍历

  • 二叉树遍历(先序、中序、后序)

    二叉树有多种遍历方法,有层次遍历、深度优先遍历、广度优先遍历等。 本文只涉及二叉树的先序、中序、后序的递归和非递归...

  • 二叉树非递归遍历(先序、中序、后序)

    二叉树有多种遍历方法,有层次遍历、深度优先遍历、广度优先遍历等。 本文只涉及二叉树的先序、中序、后序的递归和非递归...

  • 数据结构重学日记(二十二)二叉树的层次遍历

    二叉树的层次遍历也属于非递归遍历,和之前先序、中序、后序遍历的区别在于层次遍历需要借助队列来实现。 层次遍历的操作...

  • 大数据面试题目

    一、数据结构与算法 1.二叉树前序、中序、后续遍历方式(递归以及非递归) 2.二叉树的深度以及广度遍历方式 ...

网友评论

    本文标题:数据结构题目43:二叉树的层次遍历(非递归)

    本文链接:https://www.haomeiwen.com/subject/kpdpnhtx.html