并查集之按秩合并

最近在学可持久化数据结构,看了看可持久化并查集,无奈本人很菜,只会路径压缩实现并查集,不会其他方法,但是可持久化并查集用路径压缩会炸内存,所以我们需要用到按秩合并的方法去维护树形集合

按秩合并的特点,秩低的向秩高的进行合并
看下代码:

int findx(int x)
{
    if(x!=pre[x])
    {
        pre[x]=findx(pre[x]);
    }
    return pre[x];
}
void mere(int x,int y)
{
    x=findx(x);
    y=findx(y);
    if(x==y)
        return;
    if(Rank[x]<Rank[y])
    {
        pre[x]=y;
    }
    else
    {
        if(Rank[x]==Rank[y])
            Rank[x]++;
        pre[y]=x;
    }
}
发布了205 篇原创文章 · 获赞 12 · 访问量 8514

猜你喜欢

转载自blog.csdn.net/yangzijiangac/article/details/103830366