基础概念
定义:一种特殊的完全二叉树,满足堆性质,即父节点的值总是大于或小于等于其子节点的值
例子: 想象一个堆积的沙子,沙子总是按照大小排列,最大的沙子在最上面
特点:
- 完全二叉树: 所有节点都尽可能填满每一层
- 堆性质: 父节点的值总是大于或小于等于其子节点的值,根据堆性质分为最大堆和最小堆
基本操作
- 插入 (Insert): 插入新节点需要找到合适的位置,并更新指针关系,保证堆性质
- 删除 (Delete): 删除堆顶元素需要将最后一个节点放到堆顶,并更新指针关系,保证堆性质
- 查找 (Peek): 查看堆顶元素
应用场景
- 优先队列: 堆可以用来实现优先队列,例如任务调度系统
- 堆排序: 堆可以用来实现堆排序算法
- 最小/最大值查找: 堆可以快速查找最小/最大值