这是一个特殊的数据结构,它基于完全二叉树,所以有如下特点:
- 所有的节点都出现在最后一层,或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;
}
};

本文介绍了堆这种数据结构,包括大根堆和小根堆的概念,堆中结点的序号规则,以及堆的主要操作如插入元素、删除元素和堆排序。堆排序通过建立最大或最小堆来实现数组的排序,是一种有效的排序算法。
最低0.47元/天 解锁文章
12万+

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



