0
0
DSA C++programming~20 mins

Heap Extract Min or Max Bubble Down in DSA C++ - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Heap Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Extract-Min on a Min-Heap
What is the state of the min-heap array after extracting the minimum element once?
DSA C++
std::vector<int> heap = {1, 3, 6, 5, 9, 8};
// Extract min operation (remove root and bubble down)
// After extraction, heap becomes:
// 1. Replace root with last element
// 2. Remove last element
// 3. Bubble down the new root

// Resulting heap array:
A[3, 6, 5, 8, 9]
B[5, 3, 6, 8, 9]
C[3, 5, 6, 8, 9]
D[6, 3, 8, 5, 9]
Attempts:
2 left
💡 Hint
Remember to replace the root with the last element and then bubble down to restore heap property.
Predict Output
intermediate
2:00remaining
Output of Extract-Max on a Max-Heap
What is the state of the max-heap array after extracting the maximum element once?
DSA C++
std::vector<int> heap = {20, 18, 15, 13, 10, 8, 9};
// Extract max operation (remove root and bubble down)
// After extraction, heap becomes:
// 1. Replace root with last element
// 2. Remove last element
// 3. Bubble down the new root

// Resulting heap array:
A[18, 13, 15, 9, 10, 8]
B[18, 15, 9, 13, 10, 8]
C[18, 13, 9, 15, 10, 8]
D[15, 18, 9, 13, 10, 8]
Attempts:
2 left
💡 Hint
After replacing root with last element, bubble down by swapping with the larger child.
🧠 Conceptual
advanced
1:30remaining
Why Bubble Down is Necessary After Extracting Root in a Heap
Why do we need to perform the bubble down operation after extracting the root element from a heap?
ABecause the last element moved to the root may violate the heap property and needs to be moved down to restore it.
BBecause the heap size increases and we need to rebalance the tree by moving elements down.
CBecause bubble down removes duplicate elements from the heap after extraction.
DBecause bubble down sorts the entire heap array after extraction.
Attempts:
2 left
💡 Hint
Think about what happens when the last element replaces the root.
🔧 Debug
advanced
2:00remaining
Identify the Bug in Bubble Down Implementation
What is the bug in this bubble down code snippet for a min-heap?
DSA C++
void bubbleDown(std::vector<int>& heap, int index) {
  int left = 2 * index + 1;
  int right = 2 * index + 2;
  int smallest = index;
  if (left < heap.size() && heap[left] < heap[smallest]) {
    smallest = left;
  }
  if (right < heap.size() && heap[right] < heap[smallest]) {
    smallest = right;
  }
  if (smallest != index) {
    std::swap(heap[index], heap[smallest]);
    bubbleDown(heap, smallest);
  }
}
AThe function swaps elements before checking if smallest is different from index.
BThe function does not check if index is within bounds before accessing children.
CThe function should use a loop instead of recursion to avoid stack overflow.
DNo bug; the code correctly bubbles down the element.
Attempts:
2 left
💡 Hint
Check the conditions and recursive call carefully.
🚀 Application
expert
1:00remaining
Number of Items After Multiple Extract-Min Operations
Given a min-heap with 10 elements, how many elements remain after performing 3 extract-min operations?
A6
B7
C3
D10
Attempts:
1 left
💡 Hint
Each extract-min removes exactly one element from the heap.