根据堆的删除规则,删除操作只能在堆顶进行,也就是删除 0元素。然后让最后一个节点放在堆顶,做向下调整工作,让剩下的数组依然满足最小堆。删除 0 后用 8 填充 0 的位置,为[8,3,2,5,7,4,6],然后 8 和其子节点 3,2 比较,结果 2 最小,将 2 和 8 交换,为[2,3,8,5,7,4,6],然后 ...
对于给定的最小堆(优先队列),分别实现插入元素和删除堆顶的函数。函数接口定义:int insertIntoHeap(struct Heap* h, int x); // 向堆中插入元素x int deleteMin(struct Heap* h, int* pElement); //将堆顶元素拷贝到pElement所指变量并删除堆顶元素 其中...
[0,2,1,4,3,9,5,8,6,7]是以数组形式存储的最小堆,删除堆顶元素0后的结果是() A. [2,1,4,3,9,5,8,6,7] B. [1,2,5,4,3,9,8,6,7] C. [2,3,1,4,7,9,5,8,6] D. [1,2,5,4,3,9,7,8,6] 相关知识点:
0删除之后,7放到堆顶 然后经行堆调整 7和1交换 7再和5交换 所以序列就是125439786
D 0删除之后,7放到堆顶 然后经行堆调整 7和1交换 7再和5交换 所以序列就是125439786
:当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。 A. 正确 B. 错误
如果要删除哪个元素,就把哪个元素压入临时堆,然后待此元素和正常堆的堆顶元素相同时(即两个堆顶一...
{0、2、1、4、3、9、5、8、6、7}是以数组形式存储的最小堆,删除堆顶元素0后的结果是()A.{2、1、4、3、9、5、8、6、7}B.{1、2、5、4、3、9、8、6、7}C.{2、3、1、4、7、9、5、8、6}D.{1、2、5、4、3、9、7、8、6}请帮忙给出正确答案和分析,谢谢!
结果1 题目将10、12、1、14、6、5、8、15、3、9、7逐个按顺序插入到初始为空的最小堆(小根堆)中,然后连续执行两次删除最小元素操作(DeleteMin),此后堆顶的元素是什么? A. 5 B. 6 C. 7 D. 9 相关知识点: 试题来源: 解析 A 反馈 收藏 ...
查看答案