什么是堆 堆是一种特殊的树,它满足以下两点:
堆是一个完全二叉树
完全二叉树要求,除最后一层,其他层的节点个数都是满的,最后一次的节点都靠左排列。
堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值
当前节点的值是子树中的最大或最小值。
我们将每个节点的值都大于等于子树中每个节点值的堆,叫做“大顶堆”。对于每个节点的值都小于等于子树中每个节点值的堆,我们叫做“小顶堆”
我们来看一下例子:
在上面的四个实例中,我们根据以上两条规则,可以判断出:
第一个、第二个是大顶堆,第三个是小顶堆,第四个由于不是完全二叉树所以不是堆。