二叉堆
概述
二叉堆(Binary Heap) 是一种用数组表示的近似完全二叉树(complete binary tree),满足堆性质(heap property):最大堆中每个节点的值不小于其子节点的值,最小堆中每个节点的值不大于其子节点的值。
定义
二叉堆
二叉堆是一个数组对象 ,可被视为一棵近似完全二叉树。树中每个节点与数组中存放该节点值的下标相对应。
对于下标 (从 1 开始),其:
- 父节点:
- 左子节点:
- 右子节点:
最大堆性质:对每个节点 (除根外),有 。
最小堆性质:对每个节点 (除根外),有 。
核心性质
数组表示与索引操作
- 、、 均可在 时间内完成计算。
- 无需使用指针或额外存储,数组本身即隐含了树的结构。
高度与规模
- 含 个元素的堆的高度为 。
- 叶节点的下标范围为 到 。
- 非叶节点的下标范围为 到 。
堆排序中的应用
章节扩展
第6章:堆排序
二叉堆是堆排序算法的核心数据结构。通过 BUILD-MAX-HEAP 将输入数组构建为最大堆,然后反复取出堆顶最大元素完成排序。
第6章:优先队列
二叉堆也是实现 优先队列 的高效结构,支持插入、取最大值、删除最大值等操作。