12得票4回答
二叉堆 vs 二项式堆 vs 斐波那契堆,关于优先队列性能的比较。

请问有人能解释一下,我应该如何决定在标题中提到的堆实现中使用哪一个? 我希望得到一个回答,指导我在根据问题需要选择结构的性能方面选择实现。目前,我正在进行优先队列,但我想知道不仅在此情况下最适合的实现方式,还要了解基本原理,使我可以在任何其他情况下选择实现方式... 另一个需要考虑的东西是...

11得票4回答
最大堆化二叉树

这是我最近遇到的一道面试题。给定完整或几乎完整二叉树的根地址,我们必须编写一个将树转换为最大堆的函数。这里没有涉及任何数组。树已经构建好了。例如, 1 / \ 2 5 / \ ...

10得票2回答
堆还是红黑树?

我希望使用一个数据结构作为常量空间的溢出缓冲区。我希望拥有高效地插入,但更重要的是高效地删除最小元素。我考虑使用堆,因为它具有 O(log(n)) find_min() 和 log(n) 插入和删除操作。另一方面,我不明白与红黑树相比的优势,因为它也具有 O(log(n)) 的插入和删除操作,...

9得票1回答
在O(n)时间内将堆转换为二叉搜索树?

我认为我知道答案,最小复杂度为O(nlogn)。 但是有没有一种方法可以在O(n)的复杂度下从堆中创建二叉搜索树呢?

9得票1回答
为什么堆比二叉树更适合表示优先队列?

在最大堆中,查找最大项很容易且时间复杂度为O(1),但是要删除它则需要O(log(n))的复杂度。因此,如果从堆中插入和删除都是O(log(n)),那么用堆表示优先队列有什么优势,而不是用二叉树呢?

8得票3回答
向二叉堆中插入n个元素的渐进时间复杂度(已包含n个元素)

假设我们有一个包含n个元素的二叉堆,并希望插入另外n个元素(不一定是连续的)。这将需要多少总时间? 我认为时间复杂度为theta(n logn),因为每次插入需要logn时间。

8得票1回答
在二叉堆上实现一个迭代器

我正在寻找一种在二叉堆(最大或最小)上实现迭代器的方法。 也就是说,通过使用它的nextNode()函数第i次,可以获取堆中第i个(较大或较小)的元素。需要注意的是,此操作实际上并没有提取堆的根! 我的初步想法是: 1. 实际上提取i个元素,将它们推入堆栈中,然后在获取第i个值后重新将它...

7得票1回答
B-Heap中的模式是什么?

请帮忙识别这个B-堆中的模式: 在普通的二叉堆中,我们总是使用以下条件: 左子节点 = 2*i, 右子节点 = 2*i+1 父节点 = i/2 但是这些条件仅适用于前两层,并且我无法识别剩余的模式。请帮我。

7得票2回答
二叉堆与d叉堆的区别

我已经阅读了二叉堆在删除最小值操作方面更快,而d元堆在降低优先级操作方面更快(尽管我不知道为什么),但是我也看到过4元堆相对于二叉堆在这两个操作方面都更快。 那么在什么情况下使用二叉堆?什么情况下使用d元堆?如何决定d元堆中的d值呢?