📜  数据结构 |杂项 |问题 5

📅  最后修改于: 2022-05-13 01:58:11.013000             🧑  作者: Mango

数据结构 |杂项 |问题 5

需要一个数据结构来存储一组整数,以便可以在 (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)平衡二叉搜索树和堆都不能用答案:(乙)
解释:包含 n 个项目的自平衡平衡二叉搜索树允许在 O(log n) 最坏情况下查找、插入和删除项目。由于它是 BST,我们可以很容易地找出 O(nlogn) 中的最小元素。有关详细信息,请参阅我们的帖子 Find the minimum element in a Binary Search Tree。

由于堆是平衡二叉树(或几乎完全二叉树),因此堆的插入复杂度为 O(logn)。在最小堆中获得最小值的复杂性也是 O(logn),因为删除根节点会导致调用 heapify(在从数组中删除第一个元素之后)以维护堆树属性。但是正如问题所说,堆不能用于上述目的——如果元素不存在,则插入一个元素。对于堆,我们无法在 O(logn) 中找出元素是否存在。感谢游戏提供正确的解决方案。
这个问题的测验