基础概念

定义:一种特殊的完全二叉树,满足堆性质,即父节点的值总是大于或小于等于其子节点的值

例子:  想象一个堆积的沙子,沙子总是按照大小排列,最大的沙子在最上面

特点:

  • 完全二叉树: 所有节点都尽可能填满每一层
  • 堆性质:  父节点的值总是大于或小于等于其子节点的值,根据堆性质分为最大堆和最小堆

基本操作

  • 插入 (Insert): 插入新节点需要找到合适的位置,并更新指针关系,保证堆性质
  • 删除 (Delete): 删除堆顶元素需要将最后一个节点放到堆顶,并更新指针关系,保证堆性质
  • 查找 (Peek): 查看堆顶元素

应用场景

  • 优先队列: 堆可以用来实现优先队列,例如任务调度系统
  • 堆排序: 堆可以用来实现堆排序算法
  • 最小/最大值查找: 堆可以快速查找最小/最大值