根据Disjoint-set_data_structure,在 Union 部分,我在理解路径减半方法的实现时遇到了问题。
function Find(x)
while x.parent ≠ x
x.parent := x.parent.parent
x := x.parent
return x
我的第一次迭代看起来像这样:
第一次迭代后,x.parent
指向x
同一个节点(这不应该发生)。我需要有关此函数的正确流程和迭代的帮助
我对该函数的第 3 行和第 4 行以及“路径减半使路径上的每个其他节点都指向其祖父母”感到困惑。
任何帮助将不胜感激,谢谢!