sz和rank都被初始化为1,从代码中看不出来他们什么时候不是1了

来源:6-5 基于rank的优化

苒芃

2017-07-02

他们虽然在后面的unionElements()中有所修改,可是他们的原始值都是1,那么怎么会出现rank[pRoot] < rank[qRoot]或者sz[pRoot]<sz[qRoot] ? 他们是什么时候变化的呢,代码中看不出来啊? 

写回答

2回答

liuyubobobo

2017-07-03

修改就是在unionElements中完成的哦。是随着用户调用unionElements,并查集的结构在不断变化,相应的rank值或者sz值也会跟着发生变化哦。


依然是,可以使用一个小的测试用例,比如只有10个节点,随机生成10个操作,使用debug的方式一句一句看一看,随着这些操作的进行,你关心的变量是如何变化的(比如parent,rank等等等),看看这些变化和你的预期哪里不一样,这个不一样究竟是为什么,自己之前哪里想错了。通过这个方法,可以更深刻的理解算法的运行过程,其实也是更好的锻炼自己“看代码”的能力哦:)


加油!

0
0

苒芃

提问者

2017-07-03

谢谢老师,我马上试一下。

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程