定义
最大堆:关于恣意节点,其子节点均不大于该节点
最小堆:关于恣意节点,其子节点均不小于该节点
特性
最大堆:堆顶节点总是堆中最大的
最小堆:堆顶节点总是堆中最小的
图示(以最大堆为例)
刺进新节点:
最大堆刺进新节点时,比较其与父节点巨细,若父节点不小于新节点,刺进操作完毕,不然交流其与父节点方位,再次比较其与父节点巨细,直到父节点不小于新节点或新节点到达堆顶时操作完毕。
取出堆顶节点:
先交流堆顶节点与堆中最终一个节点的方位,然后从堆中移除最终的节点,即需求取出的堆顶节点,比较新堆顶节点与其子节点的巨细,若子节点均不大于堆顶节点,操作完毕,不然交流其与较大子节点的方位,再次比较,直到子节点均不大于该节点或该节点为叶子节点时操作完毕。
时刻复杂度
刺进新节点:O(log2n)O(\log_2n)
取出堆顶节点:O(log2n)O(\log_2n)