二叉堆的简单建堆方法
有时二叉堆是由一些项的初始结合构造而得。这种构造方法以N项作为输入。
最浅显的建堆方式,可以通过N个连续的insert操作(Williams’ method)来完成,由于每个insert将花费O(logN)时间,因此建堆的最坏运行时间是O(NlogN)。但是这种建堆的方式并不是最优算法。
二叉堆的优化建堆方法
更快速算法是,将N项以任意顺序放入树中,保持结构特性。然后从最后一个叶子节点的父节点开始执行下滤操作,每一次下滤都会使得该子树有序。
示意图如下:
- 以任意顺序构造的符合堆结构的二叉堆,并对最后一个叶节点的父节点执行下滤操作,使得该子树有序
2. 有序过后的子树
3. 对下标减一的节点进行下滤操作
4. 依次对下标递减的其他字树执行下滤操作,直到根节点