认老大的区分方式 并查表( 二 )


为什么要使用并查表来解决此题?
假设我们要解决的问题是,给定两个结点,判断该结点是否连通 。使用并查集的思路是:将连通第一个结点的所有结点都放入一个集合中,然后看看,另一个结点是否也在该集合中,如果存在就说明连通,不存在就不连通 。回到该题,我们将互相连接的元素都放入一个集合中,如果发现有一条边的两头结点都是同一个集合的,说明这条边尚未连接时,这两个结点已经连接起来了,现在再加上这条边,这种情况只有可能是环 。
提升
当发现双方所含的集合不一样的时候,选择其中一个集合,另一个集合加入该集合 。
【认老大的区分方式并查表】这里有其实应该选择将一个小的集合,加入到一个大的集合 。而不是随机的选择,或者固定左集合往右集合合并,这就是路径压缩算法的核心思想 。