sz和rank都被初始化为1,从代码中看不出来他们什么时候不是1了
来源:6-5 基于rank的优化
苒芃
2017-07-02
他们虽然在后面的unionElements()中有所修改,可是他们的原始值都是1,那么怎么会出现rank[pRoot] < rank[qRoot]或者sz[pRoot]<sz[qRoot] ? 他们是什么时候变化的呢,代码中看不出来啊?
写回答
2回答
-
修改就是在unionElements中完成的哦。是随着用户调用unionElements,并查集的结构在不断变化,相应的rank值或者sz值也会跟着发生变化哦。
依然是,可以使用一个小的测试用例,比如只有10个节点,随机生成10个操作,使用debug的方式一句一句看一看,随着这些操作的进行,你关心的变量是如何变化的(比如parent,rank等等等),看看这些变化和你的预期哪里不一样,这个不一样究竟是为什么,自己之前哪里想错了。通过这个方法,可以更深刻的理解算法的运行过程,其实也是更好的锻炼自己“看代码”的能力哦:)
加油!
00 -
苒芃
提问者
2017-07-03
谢谢老师,我马上试一下。
00
相似问题