并查集快速合并

对于一组数据,并查集主要支持两个动作:

  • union(p,q) – 将 p 和 q 两个元素连接起来。
  • find(p) – 查询 p 元素在哪个集合中。
  • isConnected(p,q) – 查看 p 和 q 两个元素是否相连接在一起。

在上一小节中,我们用 id 数组的形式表示并查集,实际操作过程中查找的时间复杂度为 O(1),但连接效率并不高。

本小节,我们将用另外一种方式实现并查集。把每一个元素,看做是一个节点并且指向自己的父节点,根节点指向自己。如下图所示,节点 3 指向节点 2,代表 3 和 2 是连接在一起的,节点2本身是根节点,所以指向自己。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《并查集快速合并》
文章链接:https://zhuji.vsping.com/7881.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。