我这里有一个问题,需要设计一个数据结构,该结构在以下三个操作中采用O(lg n)最坏的情况:
a) Insertion: Insert the key into data structure only if it is not already there.
b) Deletion: delete the key if it is there!
c) Find kth smallest : find the ݇k-th smallest key in the data structure
我想知道是否应该使用堆,但是对此我仍然没有一个清晰的主意。
我可以轻松地获得O(lg n)的前两个部分,甚至更快,但不确定如何处理c)部分。
任何人有任何想法请分享。
最佳答案
有两种解决方案:
举例来说,假设您的树如下:-根A有10个节点,左子B有3个节点,右子C有6个节点(3 + 6 + 1 = 10),假设您要查找第8个最小元素,你知道你应该去右边。
关于algorithm - 查找第k个最小的元素数据结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10067881/