完全路径压缩
书上给的例子是等分路径压缩:for (i = p; i != id[i]; i = id[i])
id[i] = id[id[i]]; //通过使每条链接跳跃到树中向上方向的路径的下一个节点实现压缩
for (j = q; j = id[j]; j = id[j])
id[j] = id[id[j]]; //同上
要求自己领悟写出完全路径压缩,自己研究了一下写了一个:
for (i = p; i != id[i]; i = id[i]) {
for (t = i; t != id[t]; t = id[t])
;
id[i] = t; //增设标记变量t,在循环开始给其赋以i的初值,通过循环使t由当前位置遍历至当前树的顶端,最后把值传递到id[i]中存储
}
for (j = q; j != id[j]; j = id[j]) {
for (t = j; t != id[t]; t = id[t])
;
id[j] = t; //同上
}
不知道对不对,有劳各位大虾指点