上次插入操作的可能键有哪些? Max Heap

时间:2018-05-02 16:38:04

标签: algorithm data-structures insert heap max-heap

                             20
                           /    \
                          18     19
                        /   \   /  \   
                      10    13 15   1                      
                      /\    /\ 
                     5 9   8  11

上面是Max-Heap,它是一系列插入后的结果,并删除了最大操作。 让我们假设最后一个操作是插入的。 什么可能是最后一次插入操作的关键?

我不确定的原因是因为问题没有说明它是否已经堆积,所以它可能已经或者不能被排序。但话说回来我可能错了。

附加问题:是"删除最大操作"与"删除"相同因为我之前没有遇到这个词,这有助于澄清我的困惑。

谢谢!

1 个答案:

答案 0 :(得分:0)

插入二进制堆的方法是将项放在堆的末尾,然后将其通过堆筛选到适当的位置。

因此,如果您显示的堆是最后一次插入操作后的堆,那么在该插入开始时,堆必须只有10个项。新项目放在值11的位置。

如果物品从那里被筛选出来,那么它可能被筛选的唯一位置就是现在数字13,18和20的位置。但插入的数字不能是20,因为如果它已经存在,则18将成为堆的根,并且这将不是有效的(因为19大于18,因此19将是根)。

因此,最后可能插入的唯一值是18,13和11。

在插入之前,树的那个分支可能是:

  • [18,13]:添加11不需要任何交换。
  • [18,11]:添加13,然后将其与11交换。
  • [13,11]:添加18,然后用11交换树,然后用13