不相交集合(两集合中没有相交元素),因为只能 进行合并和查找所求元素所在的集合,因此被称为并查集,至于怎么标志哪一个集合,可以使用集合的头结点(使用链表表示并查集),若果返回的元素一样则表示为同一个集合。如果使用森林表示,则用根节点代表这一个集合。只连接两个根节点即可。
这一般应用 在无向图的连通分量和一些图的算法中。
下面说明两种实现方式:
1. 不相交森林(数组实现)
森林不需要记录属于那个几个的指针,只合并根节点,在合并根节点时使用启发试的策略是按秩合并和路径压缩。
这里的秩为根节点的深度。秩小的根节点作为秩大的孩子,一个根节点可有很多孩子,是一个森林。