【发布时间】:2012-09-18 09:47:38
【问题描述】:
如果我们可以在恒定时间内找到堆中的元素,则可以在 O(lg n) 中从堆中间删除一个节点。假设堆的节点包含 id 作为其字段。现在如果我们提供 id,我们如何在 O(lg n) 时间内删除节点?
一种解决方案可以是我们可以在每个节点中都有一个位置的地址,我们在堆中维护节点的索引。该数组将按节点 ID 排序。不过,这需要维护额外的数组。有没有其他好的方法来达到同样的效果。
PS:我在实现 Djikstra 的最短路径算法时遇到了这个问题。
【问题讨论】:
标签: algorithm data-structures heap dijkstra