NOIP--详解配对堆
一、特性:
配对堆是一种比较实用的斐波那契堆,它的优势是在进行DecreaseKey的时候速度快于其他堆结构。
1.在这里,每个顶点可以接很多的孩子,在这里的实现类似与二项队列。使用左孩子与兄弟
2. 加了一个Prev指针,指向前向节点,可以指向父亲,也可以指向兄弟。
其实现如下图所示:
二、基础操作:
这里最基础的操作就是合并堆,由于一个根节点可以接许多的孩子,我们合并的时候,只需要让较小的根节点成为父亲,较大的根成为左孩子即可。
编码实现:
合并
PairHeap CompareAndLink(PairHeap H1, PairHeap H2)
{
if(H2 == NULL)
return H1;
else if(H1 ->Element <= H2->Element)
{
H2->Prev = H1;
H1->NextSibling = H2->NextSibling;
if(H1->NextSibling != NULL)
H1->NextSibling->Prev = H1;
H2->NextSibling = H1->Left;
if(H2->NextSibling != NULL)
H2->NextSibling->Prev = H2;
H1->Left = H2;
return H1;
}
else
{
H2->Prev = H1->Prev;
H1->Prev = H2;
H1->NextSibling = H2->Left;
if(H1->NextSibling != NULL)
H1->NextSibling->Prev = H1;
H2->Left = H1;
return H2;
}
}
NOIP信息学视频地址
视频地址
链接:https://pan.baidu.com/s/1tHo1DFMaDuMZAemNH60dmw
提取码:7jgr