顾名思义,并查集的功能是并和查,但并和查的对象是什么呢?针对的是集合。所以我想了一个例子给大家讲解,咱不说概念性晦涩的东西。通俗易懂,直接来看图:
这是我做的一张两个IT公司的公司人员结构,当然两个公司就不用介绍了,现在问题来了:比如我想知道Steve Ballmer和worker4是不是一个公司的该怎么办?我们可以定义一个结构体,里面有个属性叫company来记录一个人的公司,这样就浪费大量的空间;还可以定义一个传统的树形结构来存储每个节点,然后搜索根节点,找到大Boss,然后比较两个Boss如果是同一个人他们就在一个公司,但多次判断两个人在不在同一个公司,或者多次判断某个人在不在某个公司显然又浪费了大量的时间。这时就该我们的并查集登场了,我们假设先把这些人编上号,如下图:
假如我们知道所有的两人的上下级关系,然后我们申请一个set[10]的数组(大于7就可以)我们把所有人存在这个数组里,我们就利用这个set数组记录存在上下级关系的两个人,比如set的下标4就代表worker2(编号为4的人),而set[4]的值代表worker2(编号为4)的上司steve ballmer(编号为2),我们的思想就是找到两个员工顶级