heap - 没有数组的 MinMax Heap 实现

标签 heap

我发现了很多 MinMax Heap 实现,它们将数据存储在一个数组中。这真的很容易实现,这就是我正在寻找不同的东西的方式。我想创建一个 MinMax 堆,只使用堆的元素和指向左 child 和右 child 的指针(当然还有一个比较的键)。所以堆只有指向根对象的指针(最小级别),而根对象有一个指向他的 child 的指针(最大级别)等等。我知道如何插入一个新对象(根据堆大小使用 int 的二进制表示找到正确的路径),但我不知道如何实现其余的(上推(下推)元素,查找父级或祖父级) .

谢谢帮助

最佳答案

使用堆有序二叉树的优先级队列可以使用三链表结构而不是数组来实现。每个节点需要三个链接:两个向下遍历,一个向上遍历。

关于heap - 没有数组的 MinMax Heap 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698338/

相关文章:

computer-science - 在 O(1) 时间内删除带有父指针的堆?

java - 为什么Java要用堆数据结构来存储对象?

c - 堆代码行解释

java - 在最小堆中搜索最大值

java - 如何将compareTo与T Java泛型一起使用?

algorithm - 如果你有一个大小为 14 的二项式堆,你怎么知道哪个节点是根节点?

将最大堆转换为二叉搜索树

java - 检查最小-最大堆 java 的奇偶级别

Python:heapq.heappop() 给出奇怪的结果

c++ - 对象在头文件中列出,但在 cpp 文件中 undefined reference