![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构——堆
文章平均质量分 95
GG_Bond...
这个作者很懒,什么都没留下…
展开
-
数据结构——配对堆
配对堆是一棵满足堆性质的带权多叉树(如下图),即每个节点的权值都小于或等于他的所有儿子(以小根堆为例,下同)。通常我们使用儿子 - 兄弟表示法储存一个配对堆(如下图),一个节点的所有儿子节点形成一个单向链表。每个节点储存第一个儿子的指针,即链表的头节点;和他的右兄弟的指针。这种方式便于实现配对堆,也将方便复杂度分析。T v;// T为权值类型// child 指向该节点第一个儿子,sibling 指向该节点的下一个兄弟。// 若该节点没有儿子/下个兄弟则指针指向 nullptr。转载 2023-08-15 11:23:40 · 438 阅读 · 5 评论 -
数据结构——堆
堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 priority_queue 其实就是一个大根堆。插入一个数、查询最小值、删除最小值、合并两个堆、减小一个元素的值。一些功能强大的堆(可并堆)还能(高效地)支持merge等操作。一些功能更强大的堆还支持可持久化,也就是对任意历史版本进行查询或者操作,产生新的版本。原创 2023-08-15 09:43:48 · 1681 阅读 · 21 评论