Exams › GATE › Technical
An operator delete(i) for a binary heap data structure is to be designed to delete the item in the i-th node. Assume that the heap is implemented in an array and i refers to the i-th index of the array. If the heap tree has depth d (number of edges on the path from the root to the farthest leaf), then what is the time complexity to re-fix the heap efficiently after the removal of the element?
- O(1)
- O(d) but not O(1)
- O(2^d) but not O(d)
- O(d²) but not O(2^d)
Correct answer: O(d) but not O(1)
Solution
After removing an element from a binary heap, the heap property must be restored, which involves either bubbling down or bubbling up the affected node. This process can take time proportional to the depth of the heap, denoted as d, since the maximum number of levels to traverse is equal to the depth.
Related GATE Technical questions
- We want to design a synchronous counter that counts the sequence 0-1-0-2-0-3 and then repeats. The minimum number of J-K flip-flops required to implement this counter is
- A queue is implemented using an array such that ENQUEUE and DEQUEUE operations are performed efficiently. Which one of the following statements is CORRECT (n refers to the number of items in the queue)?
- Consider the following C program.
void f(int, short);
void main()
{
int i = 100;
short s = 12;
short *p = &s;
________; // call to f()
}
Which one of the following expressions, when placed in the blank above, will NOT result in a type checking error?
- The worst case running times of Insertion sort, Merge sort and Quick sort, respectively, are:
- Let G be a weighted connected undirected graph with distinct positive edge weights. If every edge weight is increased by the same value, then which of the following statements is/are TRUE?
P: Minimum spanning tree of G does not change
Q: Shortest path between any pair of vertices does not change
- Consider the following C program.
#include<stdio.h>
void mystery(int *ptra, int *ptrb) {
int *temp;
temp = ptrb;
ptrb = ptra;
ptra = temp;
}
int main() {
int a=2016, b=0, c=4, d=42;
mystery(&a, &b);
if (a < c)
mystery(&c, &a);
mystery(&a, &d);
printf("%d
", a);
}
The output of the program is _________.
⚔️ Practice GATE Technical free + battle 1v1 →