《算法导论》笔记 第19章 19.2 对二项堆的操作

本文详细介绍了二项堆的基本操作,包括创建新二项堆、寻找最小关键字、合并二项堆以及插入和删除节点的过程。在合并二项堆时,通过连接相同度数的根节点并按度数排序,确保O(lgn)的时间复杂度。此外,还讨论了减小关键字值和删除关键字的操作。同时,提供了若干练习题以加深理解二项堆的运作机制。
摘要由CSDN通过智能技术生成

【笔记】

创建一个新二项堆


寻找最小关键字

最小关键字必在根节点中。


合并两个二项堆

反复连接根节点的度数相同的各二项树

第一阶段,将二项堆H1和H2的根表合并为一个链表H,它按度数排序成单调递增次序。

第二阶段,将相等度数的根连接起来,直到每个度数至多有一个根时为止。

情况1,degree[x]!=degree[next-x]。将指针指向下一个位置。

情况2,当x为具有相同度数的三个根中的第一个时发生,把三个相等度数的根中的第二个和第三个联合起来。

情况3和情况4,当x为具有相同度数的两个根中的第一个时发生。

情况3,key[x]<=key[next-x],故将next-x连接到x上。

情况4,next-x具有更小关键字,故x被连接到next-x上。


BINOMIA-HEAP-UNION的运行时间时间为O(lgn),其中n为二项堆H1和H2中总的结点数。


插入一个结点

构造一个只包含一个结点的二项堆H‘,再在O(lgn)时间内,将其与包含n个结点的二项堆H合并。


抽取具有最小关键字的结点

具有最小关键字的根x被从H的根表中去掉。x的各子女分别为B_{k-1},B_{k-2}...B_0树的根。

得到一个包含x树中除x外每个结点的二项堆H’。

合并H与H‘所得的结果二项堆包含原堆中除x的所有结点。


减小关键字的值

使关键字冒泡上升


删除一个关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值