思路
创建两个队列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
}
网友评论