堆(Heap) 是一种基于树的抽象数据结构,在树状的层级结构之上,堆中的父节点与子节点需要满足特定的比较关系。 对于大顶堆来说,堆中的父节点的值都比子节点中的值要大;对于小顶堆来说,则相反,父节点的值比子节点要小。 这种特性使得堆一般用来实现优先队列,堆顶始终是最大或着最小值。抽象来说,堆的实现可以是任何形状的树,但通常使用的是基于完全二叉树的二叉堆。