# 什么是队列
队列也称先进先出(FIFO), 它一般使用数组来实现, 有如下的规定
- 只能从队尾插入
- 只能从队头删除
# 代码的实现
在JavaScript中实现队列还是比较简单的,借助 Array的shift (opens new window), push (opens new window)两个方法就可以实现。
# 入队
Array.push
# 出队
Array.shift
# 应用
在 树 的 层序遍历中,一般会使用队列来记录, 同一层级的节点
function dfs(tree){
let queue = [tree]
while(queue.length){
let node = queue.shift()
// 层序遍历
console.log(node.val)
node.left && queue.push(node.left)
node.right && queue.push(node.right)
}
}
# 手动实现
在这里可以使用标记队头位置和队尾位置的方式, 进行手动实现一个效率较高的队列
class queue {
constructor(){
this.array = []
this.head = 0
}
push(val){
this.array.push(val)
}
shift(){
if(this.head <= this.array.length){
return this.array[this.head++]
}else{
return null
}
}
}
# leetcode 题目
641,406,899