在一个初始为空的最小堆(min-heap)中,依次插入元素 $20, 12, 15, 8, 10, 5$。然后连续执行两次“删除最小值”(delete-min)操作。请问此时堆顶元素是什么?
这道题考最小堆的插入上浮和删除下沉。拿到题先按顺序模拟插入,插完再删两次最小值,每次删完记得把新的堆顶下沉到合法位置,最后看堆顶是谁。
很多同学容易把下沉搞错方向,最小堆下沉时不是随便找个子节点换,而是要找两个子节点里较小那个去换,不然堆性质就破了。还有的同学在插入时忘了上浮,或者删除后没把末尾元素补到堆顶,导致堆结构乱套,最后算出的堆顶可能变成15甚至20,这都是因为中间步骤漏了或做反了。
数据结构 — 堆 (Heap)
依次插入:
1. 插入 20 → [20] 2. 插入 12 → [12, 20](12 上浮) 3. 插入 15 → [12, 20, 15](不动) 4. 插入 8 → [8, 12, 15, 20](8 上浮两次) 5. 插入 10 → [8, 10, 15, 20, 12](10 上浮一次) 6. 插入 5 → [5, 10, 8, 20, 12, 15](5 上浮两次)
第一次 delete-min:
第二次 delete-min:
堆顶元素为 10。
下沉时是比较较小的子节点并与之交换(确保交换后父节点 ≤ 两个子节点),不是任意一个子节点。
堆的模拟题是常考题型。插入 = 尾添 + 上浮。删除 = 顶尾交换 + 下沉。下沉时与较小子节点交换(最小堆)。
堆在题库中共考过 21 题,覆盖 7 个考试级别。从历年分布看,2026 年考了 9 题,2025 年考了 3 题,2023 年考了 3 题,2021 年考了 1 题,2010 年考了 1 题,2007 年考了 1 题。在赛事分布上,CSP 提高级考了 7 题,CSP 入门级考了 6 题,NOIP 提高组初赛考了 2 题,GESP 各等级也均有涉及。数据表明堆是高频考点,且近年考频有上升趋势。
基于 2026 年高达 9 题的考频和 CSP 提高级近年对基础数据结构的重视,预计未来两年堆相关题目仍会保持较高频率,可能继续以模拟操作或结合优先队列的应用题形式出现。暂无足够依据预测具体题型变化,但堆的基础操作(插入、删除、建堆)几乎必考。