【发布时间】:2018-04-12 01:45:28
【问题描述】:
我一直在使用原始开发人员称为heap 的数据结构,它用于实现优先级队列。
虽然有很多关于二叉树的文章,但(最小/最大)堆的定义似乎不太明确(细节因实现而异)。
我注意到的一些特征不一定适用于二叉树结构。
- 同一元素可以多次出现在队列中,而不会导致执行或实施复杂化。
- 搜索(虽然可能并且比穷举搜索更快),但效率不高(因为不必平衡每个节点的子元素)。
- 由于搜索效率不高且可能出现重复,删除可能需要存储对
node的引用,而不是使用key来查找节点(这是二叉树的常见做法) . -
Changing priorities in the heap is trivial,与二叉树相比 where it's most common to delete+insert。
(与二叉树相比,最佳情况更好,最坏情况更差)
是否有与这些特征相匹配的数据结构的更详细的术语?
或者它只是一个 min/max heap,恰好被用作 priority-queue?
注意,这里有一个指向具有上述特征的min-heap 的链接。
【问题讨论】:
标签: algorithm heap terminology priority-queue