如何理解“堆”?
前面我们提到,堆是一种特殊的树。我们现在就来看看,什么样的树才是堆。我罗列了两点
要求,只要满足这两点,它就是一个堆。
我分别解释一下这两点。
第一点,堆必须是一个完全二叉树。还记得我们之前讲的完全二叉树的定义吗?完全二叉树
要求,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。
第二点,堆中的每个节点的值必须大于等于(或者小于等于)其子树中每个节点的值。实际
上,我们还可以换一种说法,堆中每个节点的值都大于等于(或者小于等于)其左右子节点
的值。这两种表述是等价的。
对于每个节点的值都大于等于子树中每个节点值的堆,我们叫作“大顶堆”。对于每个节点
的值都小于等于子树中每个节点值的堆,我们叫作“小顶堆”。
定义解释清楚了,你来看看,下面这几个二叉树是不是堆?
堆是一个完全二叉树;
堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。
评论0
最新资源