堆的表示
堆的定义非常简单,但要选择什么样的数据结构来实现堆呢?我们有下面两种选择方式:
1. 二叉树表示法
二叉树表示更符合堆的直观概念,它通过节点和指针显式地表示每个元素及其子节点的关系。下图展示了一个最小堆的二叉树表示,从图中可以看出,二叉树中每节点的值都要比其父节点的值更大。
2. 数组表示法
因为堆是完全二叉树,所以没有浪费空间的节点,这允许我们使用数组来紧凑地表示堆。在这种表示中,数组中的每个元素对应于树中的一个节点。如果节点 的索引为 ,则其左子节点的索引为 ,右子节点的索引为 ,父节点的索引为 。在实际应用中,通常使用数组表示法来实现堆。