代码思考_并查集

巨人的肩膀

[Python/C++/Java] 多图详解并查集

 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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值