堆是 一种二叉树的结构—->完全二叉树
什么是二叉树?
每个节点最最多有两个子节点
什么是完全二叉树?
从上到下,从左到右,依次被填满,右边下边的部分可以填满,可以不填满
什么样的二叉树才能是堆?
每个节点 >= or <= 孩子节点
最大堆 | 最小堆
最大堆 : 最大值—-堆顶元素
最小堆: 最小值—-堆顶元素
常用操作
访问:没有
搜索:搜索堆顶元素,复杂度为O(N),查看任何其他元素,复杂度为O(N)
添加:
删除:
二者复杂度均为O(LogN)
原理:最小堆和最大堆添加元素是都需要比较该元素与其直系父元素的大小,依次向上移动,知道实现堆顶最大或者最小。
堆有哪些操作?
创建堆(最小堆和最大堆)
添加元素
获取堆顶元素
删除堆顶元素
堆的长度
堆的遍历