还是没办法理解这里的rank为什么不用更新~~~~

来源:11-6 路径压缩

黎明的烬

2019-01-30

还是没办法理解这里的rank为什么不用更新~~~

写回答

1回答

liuyubobobo

2019-01-30

事实上,这正是我们将这个变量叫做rank而不是叫诸如depth或者height的原因。因为这个rank只是我们做的一个标志当前节点排名的一个数字。当我们引入了路径压缩以后,维护这个深度的真实值相对困难一些(可以思考一下要如何维护?)


而实际上,这个rank的作用,只是在union的过程中,比较两个节点的深度。换句话说,我们完全可以不知道每个节点具体的深度,只要保证每两个节点深度的大小关系可以被rank正确表达即可。而这个rank确实可以正确表达两个节点之间深度的大小关系。因为根据我们的路径压缩的过程,rank高的节点虽然被抬了上来(深度降低),但是不可能降低到比原先深度更小的节点还要小。所以,rank足以胜任比较两个节点的深度,进而选择合适的节点进行union这个任务:)


继续加油!:)

7
4
眼睛君有话说
回复
慕虎3444883
同样不明白这句话的原因。能否解释一下?
2020-04-23
共4条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程