国际空间研究组织 | ISRO CS 2009 |问题 25
需要一个数据结构来存储一组整数,以便可以在 O(log n) 时间内完成以下每个操作,其中 n 是集合中元素的数量。
一、删除最小元素
二、如果集合中尚不存在元素,则插入该元素
以下哪些数据结构可以用于此目的?
(A)可以使用堆但不能使用平衡二叉搜索树
(B)可以使用平衡二叉搜索树但不能使用堆
(C)平衡二叉搜索树和堆都可以使用
(D)平衡搜索树和堆都不能使用答案:(乙)
说明:包含 n 个项目的自平衡二叉搜索树允许在 O(log n) 最坏情况下查找、插入和删除项目。由于它是一个自平衡的 BST,我们可以很容易地在 O(logn) 时间内找出最小元素,它始终是最左边的元素。
由于堆是平衡二叉树(或几乎完全二叉树),因此堆的插入复杂度为 O(logn)。在最小堆中获得最小值的复杂性也是 O(logn),因为删除根节点会导致调用 heapify(在从数组中删除第一个元素之后)以维护堆树属性。但是正如问题所说,堆不能用于上述目的——如果元素不存在,则插入一个元素。对于堆,我们无法在 O(logn) 中找出元素是否存在。
所以,选项(B)是正确的。
这个问题的测验