【问题标题】:Understand how min-max heap looks like after after delete-min and delete-max了解在 delete-min 和 delete-max 之后 min-max 堆的样子
【发布时间】:2015-03-31 01:53:01
【问题描述】:

我有一个关于 Java 中最小-最大堆相关问题的具体问题。

如果您按此顺序输入:

71, 8, 41, 100, 60

这棵树会像下面这样吗?

                   8
           100           41
       70       60

deleteMindeleteMax 之后呢?

我试图了解如果最大节点比某些最小节点小会发生什么...如果你能帮助我用一棵很棒的树来解释它:)

【问题讨论】:

标签: java algorithm data-structures minmax-heap


【解决方案1】:

创建这个输入的最小堆的过程是这样的:

        71
      8    41
  100  60

然后它看起来像这样:

     8
  71  41
100 60

最后,它看起来像这样:

      8
  60    41
100  71

此时,每一个非叶子节点,其值都大于其子节点的值。 所以,删除最小值后,上面的最小堆的根会被删除,结果是这样的:

     41
  60    100
71

如果你删除最大值,那将是最后一个被删除的元素。 那么结果将是这样的:

     8
  60    41
71

我希望这能帮助你理解堆。

【讨论】:

  • 我很抱歉,但那是一分钟。堆?我认为这与 Min-Max heap 不同......
  • 实际上还有另一种堆类型:min-max heap,它涉及到 min 和 max heaps...
  • @SilentKnight 确实存在 min-max heap 数据结构。 Here 是*的相关页面,不完整。但是,您可以在同一篇文章的参考文献中查看原始论文。