数据结构之堆
什么是堆
堆就是一种特殊的树,只要满足如下两点,他就是堆
1、堆是一个完全二叉树
2、堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值
什么是完全二叉树,完全二叉树要求除了最后一层,每一层的节点都必须是满的,且最后一层的节点都靠左排列。
对于每个节点的值都大于等于其子树中每个节点的值的堆,我们称之为大顶堆,对于每个节点的值都小于等于子树中每个节点的值,我们称之为小顶堆。
如何实现一个堆
完全二叉树比较适合用数组来存储,我们不需要存储左右节点的指针,单纯通过数组的下标就可以找到一个节点的左右子节点和父节点。