堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。逻辑上等同于完全二叉树,物理上借助向量实现,逻辑节点与物理元素依层次遍历对应。
堆存储在下标为0开始的数组中,因此它有以下特点:
如果i = 0,节点i是根节点,没有双亲节点;否则节点i的双亲节点为节点(i - 1)/ 2。
如果2 * i + 1 <= n - 1,则节点i的左孩子为节点2 * i + 1,否则节点i无左孩子。
如果2 * i + 2 <= n - 1,则节点i的右孩子为节点 2 * i + 2,否则节点i无右孩子