数据结构

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

2020-05-11  本文已影响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)
上一篇 下一篇

猜你喜欢

热点阅读