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

posted @ 2020-11-05 13:00  tianli3151  阅读(164)  评论(0编辑  收藏  举报