问题1、其实使用第一种路径压缩,多次查找集合中元素的话,会逐渐使几乎每个节点都指向根节点的吧。比如虽然将01234一共5层压缩到了3层,第二次再搜索4或者3的时候,会使4或3也指向根节点。那么在数据量大、使用次数多的情况下,第二种压缩是不是根本没优势。
问题2、第二种路径压缩每一层都有递归,没有跳过谁,和原来迭代查找的方式要访问的次数是一样的啊,而且还使用了递归,不是应该要比迭代慢么。
问题3、我看到有同学提到对rank的维护问题,但是回答我没怎么看懂,假设有a和b集合,原本a比b的层数要高,但是经过find的压缩后,它们可能压缩的层数并不同,b比a的层数可能要高了,这时候仍然依据原来的rank是不是没多大意义,而且不论是第一种路径压缩不断的压缩至最优,还是第二种一次性压缩至最优,最后它们都不会超过两层,那么rank是不是可以去掉了。