定义

  • 堆是一个完全二叉树;
  • 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值,称为大根堆或小根堆。

堆如何存放? 数组特别适合存放完全二叉树这种数据结构
image.png
计算公式是:

  • 左节点:当前节点 * 2 的位置
  • 右节点:当前节点 * 2+1 的位置
  • 父节点:当前节点 / 2 的位置

堆动态调节

堆在删除、增加节点之后,会动态调整堆。使其保持大、小根堆的特性。

  • 注意如果删除的元素是堆顶的话,记得是把最后一个节点放到堆顶,再进行动态调整,否则会出现数组空洞的情况