A heap is a special tree-based data structure that satisfies the heap property: in a max heap, every parent node is greater than or equal to its children; in a min heap, every parent node is less than or equal to its children.
Click to reveal answer
beginner
What is the shape property of a heap?
The shape property means the heap is a complete binary tree, where all levels are fully filled except possibly the last level, which is filled from left to right.
Click to reveal answer
beginner
Explain the heap property with an example.
In a max heap, if a parent node has value 10, its children must have values less than or equal to 10. For example, a parent 10 with children 8 and 5 satisfies the heap property.
Click to reveal answer
intermediate
How is a heap usually represented in memory?
A heap is often represented as an array where the parent and child relationships are determined by indices: for a node at index i, left child is at 2i + 1, right child at 2i + 2, and parent at Math.floor((i - 1) / 2).
Click to reveal answer
intermediate
Why is the heap structure useful for priority queues?
Because the heap property allows quick access to the highest (max heap) or lowest (min heap) priority element at the root, making insertion and removal operations efficient (O(log n)).
Click to reveal answer
Which property ensures that a heap is a complete binary tree?
ABalance property
BHeap property
CShape property
DOrdering property
✗ Incorrect
The shape property ensures the heap is a complete binary tree.
In a max heap, what is true about the parent node compared to its children?
AParent is smaller than children
BParent is equal or greater than children
CParent is always equal to children
DParent is unrelated to children
✗ Incorrect
In a max heap, the parent node is always equal or greater than its children.
How do you find the left child index of a node at index i in a heap array?
A2 * i + 1
B2 * i
Ci / 2
Di - 1
✗ Incorrect
Left child index is calculated as 2 * i + 1.
What is the time complexity to insert an element into a heap?
AO(log n)
BO(n)
CO(1)
DO(n log n)
✗ Incorrect
Insertion in a heap takes O(log n) time due to heap property restoration.
Which of these is NOT true about heaps?
AHeaps are complete binary trees
BHeaps can be efficiently stored in arrays
CHeaps allow quick access to max or min element
DHeaps maintain a strict ordering between siblings
✗ Incorrect
Heaps do not require ordering between siblings, only between parent and children.
Describe the two main properties of a heap and why they matter.
Think about the tree shape and the value order between nodes.
You got /4 concepts.
Explain how a heap is represented using an array and how to find parent and child nodes.
Focus on the formulas for indices.
You got /5 concepts.
Practice
(1/5)
1. What is a key property of a max heap data structure?
easy
A. Every parent node is greater than or equal to its child nodes
B. Every parent node is less than or equal to its child nodes
C. All leaf nodes are greater than the root node
D. The tree is always a complete binary tree but unordered
Solution
Step 1: Understand max heap property
A max heap requires that each parent node is greater than or equal to its children.
Step 2: Compare options with max heap definition
Every parent node is greater than or equal to its child nodes matches the max heap property exactly, others describe min heap or incorrect properties.
Final Answer:
Every parent node is greater than or equal to its child nodes -> Option A
Quick Check:
Max heap = parent ≥ children [OK]
Hint: Max heap means parent is always bigger or equal [OK]
Common Mistakes:
Confusing max heap with min heap property
Thinking leaf nodes must be bigger than root
Ignoring the complete binary tree requirement
2. Which of the following is the correct way to represent a heap in JavaScript using an array?
easy
A. Parent at index i, left child at i + 1, right child at i + 2
B. Parent at index i, left child at 2*i + 1, right child at 2*i + 2
C. Parent at index i, left child at 2*i, right child at 2*i + 1
D. Parent at index i, left child at i - 1, right child at i - 2
Solution
Step 1: Recall array indexing for heap
In zero-based arrays, left child index = 2*i + 1, right child index = 2*i + 2.
Step 2: Match options with formula
Parent at index i, left child at 2*i + 1, right child at 2*i + 2 matches the correct formula for zero-based indexing heaps.
Final Answer:
Parent at index i, left child at 2*i + 1, right child at 2*i + 2 -> Option B
3. Consider the following JavaScript code that builds a max heap from an array:
const arr = [3, 9, 2, 1, 4, 5];
function maxHeapify(arr, i, n) {
let largest = i;
let left = 2 * i + 1;
let right = 2 * i + 2;
if (left < n && arr[left] > arr[largest]) largest = left;
if (right < n && arr[right] > arr[largest]) largest = right;
if (largest !== i) {
[arr[i], arr[largest]] = [arr[largest], arr[i]];
maxHeapify(arr, largest, n);
}
}
function buildMaxHeap(arr) {
let n = arr.length;
for (let i = Math.floor(n / 2) - 1; i >= 0; i--) {
maxHeapify(arr, i, n);
}
}
buildMaxHeap(arr);
console.log(arr);
What is the output printed?
medium
A. [3, 9, 2, 1, 4, 5]
B. [9, 3, 5, 1, 4, 2]
C. [5, 4, 3, 1, 9, 2]
D. [9, 4, 5, 1, 3, 2]
Solution
Step 1: Understand buildMaxHeap process
Start heapifying from last non-leaf node at index 2 (value 2), then index 1 (value 9), then index 0 (value 3).
Parent index calculation should be Math.floor((i - 1) / 2) -> Option A
Quick Check:
Parent index = (i-1)//2 in zero-based heap [OK]
Hint: Parent index in zero-based heap = (i-1)//2 [OK]
Common Mistakes:
Using i/2 instead of (i-1)/2 for parent
Loop condition allowing i=0 to cause errors
Swapping when parent is larger, not smaller
5. You have a min heap represented as an array: [2, 5, 8, 10, 15, 20]. You want to insert the value 1 and maintain the min heap property. Which sequence of array states correctly shows the heap after each step of insertion and heapify up?
Compare 1 with parent at index 2 (value 8), swap: [2, 5, 1, 10, 15, 20, 8] Compare 1 with new parent at index 0 (value 2), swap: [1, 5, 2, 10, 15, 20, 8]