并查集——小结

定义:

     并查集是一种树形的数据结构,用于处理一些不相交集合的合并及查询问题,因为在这样一个集合中,常常有多个不想交的集合作为子集合,所以又常常在使用中以森林来表示。

运用:

    1)初始化:把每个点所在的集合都初始化为自身,代表自己成一个集合,与别人没有关系(在每次使用的时候只需要初始化一次)。

    2)查找:查找元素所在的集合,也就是查找根节点。

3)合并:将两个元素所在的集合合并为一个集合,在此操作之前,先判断两个元素是否已经属于同一个集合。

并查集森林:

以根树来表示集合,每棵树表示一个集合,树中的节点对应每个人,每个节点包含了父节点指针,树的深度两个信息。合并集合只是将一个集合的根节点的父节点改为另一棵树的根节点。

下面是并查集的模版:

int fin(int x)  
{  
    int r = x;  
    while(bi[r] != r)  
        r = bi[r];  
    return r;  
}  
  
void me(int x,int y)  
{  
    int fx = fin(x);  
    int fy = fin(y);  
    if(fx != fy)  
        bi[fx] = fy;  
}  


并查集的路径压缩:

路径压缩实际上是在找完了根节点后,在递归回来的时候顺便把路径上元素的父亲指针都指向根节点。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值