并差集

并差集的本质是采用双亲表示法的树

数据元素ABCDEFGHIJKLM
数组下标0123456789101112
S[]-10-1-1112333344

并差集是逻辑结构——集合的一种具体实现,只进行“并”和“查”两种基本操作 具体代码实现可以参考5.5查并集.h

优化并差集合并操作

实际是通过优化合并操作来优化查找的时间复杂度 树越高查找的时间越长,所以通过优化合并的操作来让树尽可能的矮 现在所有根结点的值都是 -1,可以利用根结点的值附带上集合结点数量信息,每次合并都让小树合并到大树上 下面表格是优化后的并差集,0 号位置的-6表示A为根结点的树的总结点数是 6 个。同理C为根结点的树的总结点数是 2 个。

数据元素ABCDEFGHIJKLM
数组下标0123456789101112
S[]-60-2-5112333344

优化后的代码可以参考5.5查并集.h中的BetterUnion 优化后Find的时间复杂度为 O(log2n) 此时构造的树高度不超过 (log2n)+1