看了这章前面的所有内容,老师讲的都理解,就是一直对于find和union这两个函数中的两个形参p和q的定义有疑问。并查集的这些集合元素都可以存储在数组中,对于操作用户而言,数组中的元素一般是没有顺序的,我觉得一般的场景是让用户指定这个数组中的某两个元素,进而对这两个元素进行并查集的操作,而不是让用户指定第几个索引下的元素,我想用户可能会更直接操作某两个元素吧。例子中的构造函数初始化就会生成一个从0到N的顺序数组,这样数组中的索引和元素是恰好相等的。第p个元素对应的就是元素p,这样很自然操作的就是数组中对应的元素。但是如果对于一个杂乱的数组,用户就想把里面的某两个元素合并起来,这样不就产生很大的局限吗?
如果按照我想的那样,构造函数初始化的时候,应该传的是一个数组吧
同样为数组中的某个元素的parent设成自己,同时还需要创建一个记录元素索引的数组吧,以后的操作是针对parent[reverse[p]]进行的,这样做会存在问题吗