这是一个特殊的数据结构,它基于完全二叉树,所以有如下特点:
- 所有的节点都出现在最后一层,或s-1层
- 任意的节点如果右子树的最大的层次,左子树的最大的层次为s或s+1
一棵二叉树中,最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的任意位置上,这样的二叉树被称为完全二叉树。
所以堆是个特殊的数据结构 ,看图这就是个完全二叉树 堆,因此,堆又是完全二叉树。(怎么??)
堆的结构
大根堆
大根堆这个东西,直白的说就是根结点的值比两个子结点都大。
struct node{
inline bool operator()(const int &x,const int &y){
return x < y;
}
};