二叉树的顺序存储
什么是堆
堆排序是一种树形选择排序方法,其特点:在排序过程中,将L[1…n]视为一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的元素。
堆的定义如下: n个关键字序列L[1…n]称为堆,当且仅当该序列满足:
① L(i)≤L(2i)且L(i)≤L(2i+1)或② L(i)≥L(2i)且L(i)≥L(2i+1) (1≤i≤⌊n/2⌋)
满足第①种情况的堆称为小根堆(小顶堆),满足第②种情况的堆称为大根堆(大顶堆)。
显然,在大根堆中,最大元素存放在根结点中,且对其任一非根结点,它的值小于等于其双亲结点值。
小根堆的定义刚好相反,根结点是最小元素。