二叉树的层序遍历

2021-02-23  本文已影响0人  梁森的简书

思路

创建两个队列A、B,先讲根节点放入队列A中,然后循环遍历队列A,并将A中的节点出队到队列B中,最终队列B中的所有节点出队就是层序遍历的结果。
遍历A的方式:先将节点出队到队列B中,再判断该节点是否有左右子树,如果有就分别将其入队到队列A中。

代码

// 层序遍历
    func layerErgodic() -> Queue<String> {
        var keyQueue = Queue<String>()
        var nodeQueue = Queue<TreeNode>()
        nodeQueue.enQueue(item: root!)
        while !nodeQueue.isEmpty() {
            let node = nodeQueue.deQueue()
            keyQueue.enQueue(item: node!.key)
            if node?.left != nil {
                nodeQueue.enQueue(item: (node?.left)!)
            }
            if node?.right != nil {
                nodeQueue.enQueue(item: (node?.right)!)
            }
        }
        return keyQueue
    }

demo地址:https://github.com/yangguanghei/studyDateStructure

上一篇 下一篇

猜你喜欢

热点阅读