这是一个特殊的数据结构,它基于完全二叉树,所以有如下特点:
- 所有的节点都出现在最后一层,或s-1层
- 任意的节点如果右子树的最大的层次,左子树的最大的层次为s或s+1
一棵二叉树中,最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的任意位置上,这样的二叉树被称为完全二叉树。

所以堆是个特殊的数据结构 ,看图这就是个完全二叉树 堆,因此,堆又是完全二叉树。(怎么??)
堆的结构
大根堆
大根堆这个东西,直白的说就是根结点的值比两个子结点都大。
struct node{
inline bool operator()(const int &x,const int &y){
return x < y;
}
};

小根堆
小根堆这个东西,直白的说就是根节点的值比两个子结点都小。
struct node{
inline bool operator()(const int &x, const int &y){
return x > y;
}
};
159




被折叠的 条评论
为什么被折叠?



