由于平衡BST
需要O(log(n))
时间,因此提取最大(通过提取我的意思是查找和删除最大元素)。
另一方面,Max-heap
也需要O(log(n))
时间来提取max元素。
在Extract-Max操作中,是否有人比其他人更具优势?
答案 0 :(得分:0)
在考虑数据结构时,您应该考虑它们的复杂性,包括时间和空间。这里的空间是一样的,所以让我们关注时间:
平衡BST:
平衡BST维持h = O(lg n)⇒所有操作都在O(lg n)时间内运行。
<强>最大堆强>:
查找最大值O(1),删除最大值O(lg n)
这意味着他们的时间复杂性也是一样的。
同样通过阅读此answer,您得出相同的结论:
...最大堆或二叉树非常合适。
但请注意,平衡已构建的BST是O(n)操作(Balancing a BST)。所以如果我也必须这样做,那么我会选择最大堆。
如需高级用法,请阅读Which data structure to use for accessing min/max in constant-time?