哈希——并查集结构

并查集解决的问题:(速度快)

1.非常快的检查两个元素是否属于一个集合  isSameSet(A, B)

2.将两个元素各自所在的集合,合并在一起  union(A, B)  合并的是A,B所在的 集合,而不是单纯的合并A和B

代表结点:指向自己的结点

初始化时,要有所有的样本结点

2是代表结点

4是代表结点

  isSameSet(A, B)  查找A,B的上面的结点,知道找到指向自己的代表结点,如果是同一个代表结点,就是true,否则就是false

 union(A, B)    将两个代表结点合并即可,结点数少的挂到结点数多的上面

优化(扁平化处理):当查找,从链上某个结点往上找它的代表结点时,找到之后,沿途所经过的所有结点,在找完之后统统指向代表结点

扫描二维码关注公众号,回复: 73371 查看本文章

(只要涉及到链的查找动作时,都优化)

如下面找12结点的代表结点时,

找到代表结点2之后,将12往上的结点统统直接挂到2结点上,但是12结点下面的不管

猜你喜欢

转载自www.cnblogs.com/SkyeAngel/p/8954885.html
今日推荐