堆
堆的知识点和应用
定义
一个完全二叉树
每个节点的值都大于等于(大顶堆)或小于等于(小顶堆)左右子节点的值
存储
由于堆是完全二叉树,所以一般用数组来存储。

数组中下标为 i 的节点的左子节点,就是下标为 i∗2 的节点,右子节点就是下标为 i∗2+1 的节点,父节点就是下标为 i/2 的节点。
堆化
插入元素-自下向上堆化
新插入的节点放入最后面,如果与父节点之间大小关系不满足定义,就交换两个节点,并继续比较 ,直到满足关系为止。

删除堆顶元素-自顶向下堆化
堆顶元素存储着最大值(大顶堆)或者最小值(小顶堆)。一般移除堆顶元素来获得这个值。移除后需要对堆进行调整。
可以把最后一个元素放到堆顶,然后自顶向下进行调整,可以避免破坏完全二叉树结构。


最后更新于
这有帮助吗?