并查集
并查集
- 一般用于快速判断两个元素是否同属于一个集合
- 数组形式表示树结构
- 插入元素会被映射到从0开始的顺序整数中
实现技巧
- 路径压缩:在find时,通过递归并返回找到的祖宗节点并赋值,可以达成find后降低树高的功效
- 按秩归并:在unite时,其中一方会挂在另一方的门下,所以希望“小的挂到大的上面”,以此来产生结果高度更小的树,有两种方式:
- 高度:树高:S[Root]=-树高,代码多一步判断:即:两个树相同高度时,增加树高
- 数目(推荐):S[Root]=-元素个数。子孙节点数目,可以通过利用根节点来达成,根节点之前是-1,现在改为-n,其中n是包含根节点的整个树的节点数目