ποΈ Queue
One-line summary: First-in first-out (FIFO) β the backbone of BFS, level-order traversal, and rate-limiting.
Conceptβ
A queue supports:
enqueue(x)β add to rear: O(1)dequeue()β remove from front: O(1)peek()β read front: O(1)
Variants: circular buffer (fixed-size), deque (double-ended), monotonic deque (sliding window max).
Diagramβ
Time & Space Complexityβ
| Operation | Time | Space |
|---|---|---|
| Enqueue / Dequeue | O(1) | O(1) |
| BFS traversal | O(V+E) | O(V) |
Common Patternsβ
BFS Level Orderβ
function levelOrder(root) {
if (!root) return [];
const result = [],
queue = [root];
while (queue.length) {
const level = [],
size = queue.length;
for (let i = 0; i < size; i++) {
const node = queue.shift();
level.push(node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
result.push(level);
}
return result;
}
Monotonic Deque (Sliding Window Max)β
function maxSlidingWindow(nums, k) {
const deque = [],
result = [];
for (let i = 0; i < nums.length; i++) {
while (deque.length && deque[0] < i - k + 1) deque.shift();
while (deque.length && nums[deque[deque.length - 1]] < nums[i]) deque.pop();
deque.push(i);
if (i >= k - 1) result.push(nums[deque[0]]);
}
return result;
}
Pitfallsβ
- JS
array.shift()is O(n) β for performance use a pointer-based deque or linked list - BFS: process all nodes at current level before moving to next (use
sizesnapshot)
Practice Problemsβ
Easy Problemsβ
Medium Problemsβ
Hard Problemsβ
Related Topicsβ
- Graphs β BFS uses a queue
- Stack β DFS counterpart
- Sliding Window β monotonic deque
β Back to Home Β· Β© sparshjaswal