《Thinking In Algorithm》15.堆结构之二项堆

本文介绍了二项堆这一数据结构,对比了二项堆与二叉堆的区别,详细阐述了二项树的概念,并分析了二项堆的创建、查找最小值、合并、插入、提取最小值节点、减少节点值和删除元素等操作的时间复杂度及其实现原理。
摘要由CSDN通过智能技术生成

堆的变体:

  • 二项堆

上篇博客中我讲了下数据结构二叉堆,而今天讲的二项堆与他最大的不同是它可以快速的合并成两个堆,通过一个特殊的树结构完成的。

下面列出了三种堆的时间复杂的比较。


次那个上面我们可以看出与二叉堆的差别在于找到最小元素和合并。

二叉堆查找最小元素的时间复杂度为O(1),而二项堆: O(lgn)

二叉堆合并花费:O(n),二项堆:O(lgn)

二项堆是二项树的集合。所以我们讲二项堆之前先来弄明白二项树。


1.二项树

如下图中所示,树B0是由一个结点构成的,Bk是由两棵Bk-1的树组成的,是通过连接他们的树根组成的。即其中一棵树的根变成另一棵树的最左边的孩子。



对于二项式的定义如下:

  • 度数为0的二项树只包含一个结点
  • 度数为k的二项树有一个根结点,根结点下有k个子女,每个子女分别是度数分别为k-1, k-2, ..., 2, 1, 0的二项树的根

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值