标签:
正确的并查集不是简单的合并,是合并后每次查询时把所有节点直接连接到根节点。
就算你进行了一百万次合并产生了一个一百万深度的链,只需要一次查询就会让所有节点的深度回到1,o1复杂度
常数非常小,只需要一行代码就能实现。并查集算法在设计之初,就是为了实现不受深度影响的o1复杂度的合并和查询,没有缩路到根节点的算法不能称为并查集。
这样做的好处是,合并的复杂度几乎可以忽略不计,如果进行过一百万次合并,则查询时最多一次性将一百万个节点连到根节点,
平摊下来比每次合并时单独处理要快非常多。
会让深度不断积累的代码只能说这人一开始就不懂什么是并查集啊
标签:
原文地址:http://www.cnblogs.com/java2016/p/5449714.html