Algorithm 上次插入操作的可能键是什么?最大堆

Algorithm 上次插入操作的可能键是什么?最大堆,algorithm,data-structures,insert,heap,max-heap,Algorithm,Data Structures,Insert,Heap,Max Heap,上面是Max-Heap,它是一系列插入和移除Max操作后的结果。 假设最后一个操作是insert。 上次插入操作的可能键是什么 我不确定的原因是,这个问题没有说明它是否已经被分类,因此它可以或不能被分类。但我可能又错了 附加问题:“删除最大操作”是否与“删除”相同,因为我以前没有遇到过这个术语,这将有助于澄清我的困惑 谢谢 插入二进制堆的方法是将项放在堆的末尾,然后在堆中筛选到适当的位置 因此,如果显示的堆是上次插入操作后的堆,那么在插入开始时,堆必须只有10个项。新项目已放置在值11当前所在的

上面是Max-Heap,它是一系列插入和移除Max操作后的结果。 假设最后一个操作是insert。 上次插入操作的可能键是什么

我不确定的原因是,这个问题没有说明它是否已经被分类,因此它可以或不能被分类。但我可能又错了

附加问题:“删除最大操作”是否与“删除”相同,因为我以前没有遇到过这个术语,这将有助于澄清我的困惑


谢谢

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

因此,如果显示的堆是上次插入操作后的堆,那么在插入开始时,堆必须只有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交换

对于您显示的堆,“移除最大值”意味着将20从堆中取出,将11移动到20所在的位置,然后重新heapify。您当然可以将11添加到最后一个,因为它只会停留在原来的位置。奥托,如果13是最后一个,那么在添加13之前,你会得到18-11-8。当13被添加时,它将与11进行切换,然后保持不变。所以13号可能是最后一个。
                             20
                           /    \
                          18     19
                        /   \   /  \   
                      10    13 15   1                      
                      /\    /\ 
                     5 9   8  11