在左式堆中一个已知位置删除节点的一种方法是使用懒惰策略。要删除一个节点,只要将其标记为已被删除即可。当执行一个FindMinFindMinDeleteMinDeleteMin时,若标记根节点被删除则存在一个潜在的问题,因为此时节点必须被实际删除且需要找到实际的最小元,这可能涉及到删除其他一些已做标记的节点。

在该方法中,DeleteDelete花费一个单位,但一次DeleteMinDeleteMinFindMinFindMin的开销却依赖于被做删除标记的节点的个数。

Cheriton和Tarjan [1] 在论文中讨论了左式堆中的懒惰删除。一般的想法是:如果根被标记为删除,则形成堆的先序遍历,并删除标记删除的节点,留下堆的集合。通过将所有的堆放在队列中,每次出队两个堆进行合并然后将结果放在队列的末尾,直到队列中只有一个堆时停止操作。

相关文章:

  • 2021-07-17
  • 2021-06-23
  • 2021-12-08
  • 2022-12-23
  • 2021-11-17
  • 2021-06-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
  • 2022-01-25
  • 2022-12-23
  • 2022-02-14
相关资源
相似解决方案