堆的变体:
- 二项堆
上篇博客中我讲了下数据结构二叉堆,而今天讲的二项堆与他最大的不同是它可以快速的合并成两个堆,通过一个特殊的树结构完成的。
下面列出了三种堆的时间复杂的比较。
次那个上面我们可以看出与二叉堆的差别在于找到最小元素和合并。
二叉堆查找最小元素的时间复杂度为O(1),而二项堆: O(lgn)
二叉堆合并花费:O(n),二项堆:O(lgn)
二项堆是二项树的集合。所以我们讲二项堆之前先来弄明白二项树。
1.二项树
如下图中所示,树B0是由一个结点构成的,Bk是由两棵Bk-1的树组成的,是通过连接他们的树根组成的。即其中一棵树的根变成另一棵树的最左边的孩子。
对于二项式的定义如下:
- 度数为0的二项树只包含一个结点
- 度数为k的二项树有一个根结点,根结点下有k个子女,每个子女分别是度数分别为
的二项树的根

本文介绍了二项堆这一数据结构,对比了二项堆与二叉堆的区别,详细阐述了二项树的概念,并分析了二项堆的创建、查找最小值、合并、插入、提取最小值节点、减少节点值和删除元素等操作的时间复杂度及其实现原理。
最低0.47元/天 解锁文章
4868

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



