我有一个关于Java中min-max堆相关问题的具体问题。
如果您按此顺序输入:
71, 8, 41, 100, 60
树是否如下所示?
8
100 41
70 60
在deleteMin
和deleteMax
之后呢?
我试图理解如果最大节点比某些最小节点小一些会发生什么......如果你能用一棵树来解释它会帮助我很好:)
答案 0 :(得分:-2)
创建此输入的最小堆的过程如下:
71
8 41
100 60
然后它看起来像这样:
8
71 41
100 60
最后,它看起来像这样:
8
60 41
100 71
此时,每个非叶节点,其值都大于其子节点的值。 因此,删除min值后,上面的min-heap的根将被删除,结果如下:
41
60 100
71
如果删除最大值,那么这将是删除的最后一个元素。 那么结果就是这样:
8
60 41
71
我希望这能帮助你理解堆。