并查集是一种可以快速回答两个元素是否在同一个集合中的数据结构. 在图论中, 我们可以使用并查集来确定两个节点是否连通. 比如给出一个无向图, 你需要判断两个节点是否连通. 并查集可以用非常低的时间复杂度来回答问题.
原理
并查集在逻辑上是一个树状结构, 顶点代表某个彼此连通的集合. 在存储中用的则是数组, 每个元素保存自己的父元素. 如果当前元素是根, 那么他保存自己. 通过不断寻找父元素, 可以找到当前元素所在的集合. 如果两个元素的根元素相同, 那么它们在同一个集合中.
并查集的操作
Find 操作
Find(a)
: 查找操作. 一般而言是查找一个集合的代表元素(根元素). 根据前面的描述, 可以写出这样的代码:
int Find(int a)