巨人的肩膀
def find2(self, x):
"""
路径压缩,降低树的深度,例如固定成2
Args:
x:
Returns:
"""
root = x
# 循环1
while self.father[root] is not None: # 不断往上遍历,找到根节点
root = self.father[root]
while x != root: # 当前节点不是根节点
original_father = self.father[x] # x的父节点赋值给original_father
self.father[x] = root # 将x的父节点变成经过"循环1"查询到的根节点
x = original_father # 将当前向上遍历的节点付给x, 便于检查original_father是否为祖先
return root
实现: 将非根节点的节点的父节点全部更新成根节点, 举个栗子, 将C的父节点更新成根节点A