You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

最小堆插入逆向推导问题:求插入24前的堆结构

求解插入24之前的最小堆结构

要得到插入24之前的堆结构,我们需要逆向堆的插入操作:插入元素时是将新元素放到堆末尾,再通过**上浮(sift up)调整到正确位置;逆操作则是将24与堆的最后一个元素交换,移除24后,对交换过来的元素进行下沉(sift down)**调整,恢复最小堆结构。

步骤1:交换24与堆末尾元素

已知最终最小堆为:[13, 24, 32, 32, 41, 38, 50, 48, 40]
将24(索引1)与末尾的40(索引8)交换,得到数组:[13, 40, 32, 32, 41, 38, 50, 48, 24]

步骤2:移除最后插入的24

移除末尾的24,得到初始待调整数组:[13, 40, 32, 32, 41, 38, 50, 48]

步骤3:对40进行下沉调整

此时40位于索引1,它的左子节点是索引3的32,右子节点是索引4的41。由于32 < 40,不符合最小堆父节点≤子节点的要求,将40与32交换:
交换后数组变为:[13, 32, 32, 40, 41, 38, 50, 48]

验证调整后的堆

检查该数组是否符合最小堆特性:

  • 根节点13的左右子节点32、32均大于13,符合要求;
  • 索引1的32的左右子节点40、41均大于32,符合要求;
  • 索引2的32的左右子节点38、50均大于32,符合要求;
  • 其余节点的子节点均大于自身,无违反最小堆规则的情况。

最终插入前的堆结构

[13, 32, 32, 40, 41, 38, 50, 48]

内容的提问来源于stack exchange,提问作者NISAR AHMED

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:12:01