- libevent2 的最小堆
- labuladong
堆
堆,又称为优先队列。虽然名为优先队列,但堆并不是队列。堆和队列是两种不同的数据结构,堆是树态的,队列是线性的。在队列中,我们可以向队列添加元素,取出的时候是按照进入队列的先后顺序取出元素的,先进先出;而在堆中,却不是按照元素添加的先后顺序,而是按照元素的优先级取出元素。
所以二叉堆是为了找出最大或最小而生的,“大”和“小”并不是传统意义上的小大,而是优先级的高低。二叉堆分为最大堆和最小堆,最大堆的顶点可以看作是优先级最高的也可以看作是优先级最低的,最小堆也是如此。
最小堆
- 一颗完全二叉树
- 每个根节点都比自己的叶子小
-
- 最大(或者最小)是对其子树的所有的节点来说的