13.4 堆
堆(heap)是一个完全二叉树,其结点组织是基于各自结点的数据域。它有两个重要的变种——最大堆和最小堆。
最大堆(max-heap),具有称为堆序性质(heap order property)。对于其任意一个内结点而言,该结点处的值均大于其两个子结点的值。
最小堆(min-heap),则具有相反的堆序性质,对于其任意一个内结点而言,该结点处的值均小于其两个子结点的值。
13.4.1 定义
插入操作
向堆中插入新值,堆序性质和堆形性质(heap shape property,即保持其作为完全二叉树的性质)都要保持。
例如分别向如下两个最大堆插入元素90和元素41。
我们从堆的底部开始,先创建新结点,再将之添加到堆中,再与其父结点比较,若大于父结点,则两者互换,重复此过程,直至小于父结点为止。向上移动的过程就称为sift-up过程。