What is the purpose of the 'bubble down' operation in a heap after extracting the min or max element?
The 'bubble down' operation restores the heap property by moving the root element down the tree, swapping it with its smaller (min-heap) or larger (max-heap) child until the heap order is correct.
Click to reveal answer
beginner
In a min-heap, after extracting the minimum element, which element replaces the root before bubbling down?
The last element in the heap replaces the root before the bubble down process starts.
Click to reveal answer
intermediate
What condition stops the bubble down process in a heap?
Bubble down stops when the current node is smaller (min-heap) or larger (max-heap) than both its children or when it reaches a leaf node.
Click to reveal answer
intermediate
Why do we use bubble down instead of bubble up after extracting the root in a heap?
Because after removing the root, we place the last element at the root, which may violate the heap property downward, so bubble down fixes the heap from top to bottom.
Click to reveal answer
intermediate
Show the pseudocode steps for bubble down in a min-heap after extraction.
1. Replace root with last element.
2. Set current index to root.
3. While current has at least one child:
a. Find smaller child.
b. If current > smaller child, swap.
c. Update current to child's index.
4. Stop when heap property is restored.
Click to reveal answer
What element replaces the root in a heap after extracting the min or max element?
AThe second smallest element
BThe last element in the heap
CA new random element
DThe root's left child
✗ Incorrect
After extraction, the last element moves to the root position before bubble down.
In a max-heap, bubble down swaps the root with which child?
ANo child, bubble down is not needed
BThe smaller child
CThe left child always
DThe larger child
✗ Incorrect
Bubble down swaps with the larger child to maintain max-heap property.
When does the bubble down process stop in a heap?
AWhen the current node is the root
BAfter one swap only
CWhen the current node is smaller (min-heap) or larger (max-heap) than its children
DWhen the heap is empty
✗ Incorrect
Bubble down stops when heap property is restored at the current node.
Which of these is NOT a step in bubble down after extraction?
ABubble up the root element
BSwap with child violating heap property
CStop when heap property is restored
DReplace root with last element
✗ Incorrect
Bubble up is not used after extraction; bubble down fixes the heap.
What is the time complexity of bubble down in a heap of size n?
AO(log n)
BO(n)
CO(1)
DO(n log n)
✗ Incorrect
Bubble down takes O(log n) time because it moves down the height of the heap.
Explain the bubble down process in a min-heap after extracting the minimum element.
Think about fixing the heap from top to bottom.
You got /4 concepts.
Describe why bubble down is necessary after extracting the root in a max-heap.
Focus on what happens to the heap structure after removal.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of the bubble down operation in a min-heap after extracting the minimum element?
easy
A. To insert a new element at the bottom of the heap
B. To restore the heap property by moving the root element down to its correct position
C. To swap the last element with the root without any further changes
D. To remove all elements smaller than the root
Solution
Step 1: Understand extract-min operation
When the minimum element (root) is removed, the last element is moved to the root position.
Step 2: Apply bubble down to restore heap
The bubble down operation moves this element down the tree to restore the min-heap property by swapping with smaller children.
Final Answer:
To restore the heap property by moving the root element down to its correct position -> Option B
Quick Check:
Bubble down fixes heap after extract-min [OK]
Hint: Bubble down fixes heap after removing root [OK]
Common Mistakes:
Thinking bubble down inserts new elements
Assuming bubble down only swaps root with last element
Confusing bubble down with bubble up
2. Which of the following is the correct syntax to swap two elements heap[i] and heap[j] in C during bubble down?
easy
A. temp = heap[i]; heap[i] = heap[j]; heap[j] = temp;
B. swap(heap[i], heap[j]);
C. heap[i], heap[j] = heap[j], heap[i];
D. heap[i] <-> heap[j];
Solution
Step 1: Recognize C swap syntax
In C, swapping requires a temporary variable to hold one value during exchange.
3. Given the min-heap array [2, 4, 5, 10, 7, 6], after extracting the minimum and performing bubble down, what is the resulting heap array?
medium
A. [4, 7, 5, 10, 6]
B. [5, 4, 6, 10, 7]
C. [6, 4, 5, 10, 7]
D. [4, 6, 5, 10, 7]
Solution
Step 1: Remove root and replace with last element
Remove 2, move last element 6 to root: [6, 4, 5, 10, 7]
Step 2: Bubble down 6 to restore min-heap
Compare 6 with children 4 and 5; swap with smallest child 4: [4, 6, 5, 10, 7]. Next, 6's children are 10 and 7, both larger, so stop.
Final Answer:
[4, 6, 5, 10, 7] -> Option D
Quick Check:
Bubble down swaps with smaller child [OK]
Hint: Replace root with last, then bubble down [OK]
Common Mistakes:
Not swapping with the smallest child
Stopping bubble down too early
Replacing root incorrectly
4. Consider this bubble down code snippet for a max-heap in C. What is the bug?
void bubbleDown(int heap[], int size, int i) {
int largest = i;
int left = 2*i + 1;
int right = 2*i + 2;
if (left < size && heap[left] > heap[largest])
largest = left;
if (right < size && heap[right] > heap[largest])
largest = right;
if (largest != i) {
int temp = heap[i];
heap[i] = heap[largest];
heap[largest] = temp;
bubbleDown(heap, size, largest);
}
}
medium
A. No bug, code correctly bubbles down in max-heap
B. Left and right child indices calculation is wrong
C. Recursive call should be bubbleDown(heap, size, i) instead of largest
D. Swapping should happen only if heap[i] < heap[largest]
Solution
Step 1: Check child index calculations
Left = 2*i+1 and right = 2*i+2 are correct for zero-based heap arrays.
Step 2: Verify bubble down logic
Code finds largest among node and children, swaps if needed, then recurses on swapped child. This matches max-heap bubble down logic.
Final Answer:
No bug, code correctly bubbles down in max-heap -> Option A
Quick Check:
Correct child indices and recursion [OK]
Hint: Check child indices and recursion carefully [OK]
Common Mistakes:
Confusing left/right child index formulas
Wrong recursive call index
Swapping condition misunderstanding
5. You have a max-heap represented by the array [20, 18, 15, 10, 12, 9, 8]. After extracting the maximum element and performing bubble down, what is the final heap array?
hard
A. [18, 12, 15, 10, 9, 8]
B. [18, 10, 15, 8, 12, 9]
C. [18, 12, 15, 10, 8, 9]
D. [18, 15, 12, 10, 9, 8]
Solution
Step 1: Remove root and replace with last element
Remove 20, move last element 8 to root: [8, 18, 15, 10, 12, 9]
Step 2: Bubble down 8 to restore max-heap
Compare 8 with children 18 and 15; swap with largest child 18: [18, 8, 15, 10, 12, 9]. Next, 8's children are 10 and 12; swap with largest child 12: [18, 12, 15, 10, 8, 9]. Now 8's children are out of range, stop.
Final Answer:
[18, 12, 15, 10, 8, 9] -> Option C
Quick Check:
Bubble down swaps with largest child until heap property restored [OK]
Hint: Replace root with last, bubble down swapping largest child [OK]
Common Mistakes:
Swapping with smaller child instead of largest
Stopping bubble down too early
Incorrectly replacing root element
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.