📜  门| GATE-CS-2003 |第63章

📅  最后修改于: 2021-06-29 01:10:30             🧑  作者: Mango

需要一种数据结构来存储一组整数,以便可以在(log n)时间完成以下每个操作,其中n是该集合中元素的数量。

o    Delection of the smallest element 
   o    Insertion of an element if it is not already present in the set

以下哪个数据结构可用于此目的?
(A)可以使用堆,但不能使用平衡的二进制搜索树
(B)可以使用平衡的二进制搜索树,但不能使用堆
(C)平衡二进制搜索树和堆都可以使用
(D)既不能使用平衡的二进制搜索树也不能使用堆答案: (B)
解释:
首先,我们将讨论堆和平衡bst及其基本操作的时间复杂性,例如

插入,删除,查找。

堆:-

让我们将其视为最小堆

1)插入:O(logn)

2)删除最小值:O(logn)(只需将根替换为INT_MAX并进行堆化)

3)查找:O(n)

平衡的BST:-

1)插入:O(logn)

2)删除最小值:O(logn)

3)查找:O(logn)

陈述1:

1)可以在两个数据结构的O(logn)中删除最小元素

陈述2:

1)插入元素(如果集合中尚不存在)

在堆中,我们可以在O(n)中执行此操作,因为我们必须在此处执行线性搜索,而在BST中,我们可以在O(logn)中执行此操作

请参阅https://www.geeksforgeeks.org/data-structures-and-algorithms-set-3/的问题4

该解决方案由Anil Saikrishna Devarasetty提供
这个问题的测验