哪一个更好的是平衡二叉搜索树或最大堆来提取max元素?

时间:2017-05-09 13:09:13

标签: algorithm data-structures binary-tree binary-search-tree binary-heap

由于平衡BST需要O(log(n))时间,因此提取最大(通过提取我的意思是查找和删除最大元素)。 另一方面,Max-heap也需要O(log(n))时间来提取max元素。

在Extract-Max操作中,是否有人比其他人更具优势?

1 个答案:

答案 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?

来源:12