堆
堆,又称为优先队列。虽然名为优先队列,但堆并不是队列。堆和队列是两种不同的数据结构,堆是树态的,队列是线性的。在队列中,我们可以向队列添加元素,取出的时候是按照进入队列的先后顺序取出元素的,先进先出;而在堆中,却不是按照元素添加的先后顺序,而是按照元素的优先级取出元素。
所以二叉堆是为了找出最大或最小而生的,“大”和“小”并不是传统意义上的小大,而是优先级的高低。二叉堆分为最大堆和最小堆,最大堆的顶点可以看作是优先级最高的也可以看作是优先级最低的,最小堆也是如此。
最小堆
- 一颗完全二叉树
- 每个根节点都比自己的叶子小
-
- 左、右(如果有) 叶子之间没有大小关系
- 具体对外api 有 插入、删除(根据啥来删除呢?位置索引?:直接删除根节点)、获取最优(就是根节点)、
- 主要操作