首页 > 试题广场 >

最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之

[单选题]
最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之后,其结果是()
  • [3,2,5,7,4,6,8]
  • [2,3,5,7,4,6,8]
  • [2,3,4,5,7,8,6]
  • [2,3,4,5,6,7,8]
推荐
答案:C
根据堆的删除规则,删除操作只能在堆顶进行,也就是删除0元素。
然后让最后一个节点放在堆顶,做向下调整工作,让剩下的数组依然满足最小堆。
删除0后用8填充0的位置,为[8,3,2,5,7,4,6]
然后8和其子节点3,2比较,结果2最小,将2和8交换,为:[2,3,8,5,7,4,6]
然后8的下标为2,其两个孩子节点下标分别为2*2+1=5,2*2+2=6
也就是4和6两个元素,经比较,4最小,将8与4交换,为[2,3,4,5,7,8,6]
这时候8已经没有孩子节点了,调整完成。
编辑于 2015-01-30 15:14:12 回复(0)
插入元素是在最后插入,然后进行调整堆;删除元素是把最后的元素放到删除元素的地方,然后进行调整堆。 删除0后用8填充0的位置,为[8,3,2,5,7,4,6],然后再继续调整堆。直到满足最小堆为止。
发表于 2016-08-18 21:36:51 回复(2)
8先替换0的位置,然后8再跟两个儿子比,选最小的,所以,替换2,现在8处在第二层,然后再跟两个儿子比,4和6,再选较小的那个4。
发表于 2017-03-31 20:22:48 回复(0)
C 堆是按照完全二叉树来构建的,当删除堆顶元素0之后,将末结点8顶上,为了维持最小堆,则继续向下做结点间的替换。
发表于 2015-04-14 20:15:30 回复(0)
插入元素是从最后一个节点开始之后向上比较进行堆排序(注意是最大堆还是最小堆),删除元素是从堆顶开始删除,将最后一个节点放到第一个节点,然后向下进行调整,若是最小堆,则与两个子节点比较并将最小的放到夫节点中,以此类推…
发表于 2017-04-03 16:38:16 回复(0)
关键是和最后一个交换
发表于 2016-05-12 01:39:00 回复(0)
C 删除0之后,末尾8代替0的位置,根据最小堆的调换,序列为[2,3,4,5,7,8,6]
发表于 2015-01-12 11:33:18 回复(0)
交换策略是从第一个元素(根)开始,如果根大于子节点,那么从子节点选一个最小的,和自己交换,然后递归调用判断被换的那个子节点,换了之后是否还满足堆
发表于 2016-10-27 22:52:32 回复(0)
删除时,是最后一个节点与第一个节点交换
发表于 2015-08-17 17:07:54 回复(0)
按照这个画出来 0325746(「・ω・)「嘿8325746(「・ω・)「嘿2385746(「・ω・)「嘿2345786
发表于 2017-07-13 19:07:51 回复(0)
先把这些结点画成完全二叉树形状;按照以下两个性质变换后即为答案
(1)R的值小于或等于其两个子女,此时堆已完成
(2) R的值大于其某一个或全部两个子女的值,此时R应与两个子女中值较小的一个交换,结果得到一个堆
发表于 2019-06-20 10:03:22 回复(0)
删除0之后,将最后的8放到根节点,然后进行最小堆调整就行了
发表于 2017-06-15 20:12:03 回复(0)
插入是在最后插入,删除是删除元素和最后一个元素互换,然后调整。 下标从0开始,任何一个节点下标为N的左右叶子分别是 2N+1和2N+2
编辑于 2024-02-25 17:04:39 回复(0)
插入时在最后一个插入,删除时将最后一个放到堆顶
发表于 2022-05-10 20:00:50 回复(0)
C
发表于 2015-04-02 17:05:46 回复(0)