코드를 볼까요?

    코드 13-5

        def weighted_union(self, i, j):
            """
            parameters i, j must be roots!
            if size[i] < size[j] then parent[i] = j
            """
            # abs(parent[i]) = size[i]
            # temp_cnt는 음수고 size[i] + size[j]
            temp_cnt = self.parent[i] + self.parent[j]
    
            # size[i] < size[j]
            if self.parent[i] > self.parent[j]:
                self.parent[i] = j
                self.parent[j] = temp_cnt
            # size[i] > size[j]
            else:
                self.parent[j] = i
                self.parent[i] = temp_cnt

    코드 13-5는 weighted_union을 구현한 것입니다. 매개변수 i, j는 반드시 루트여야 합니다. 각 집합이 가진 노드 개수를 비교하여 노드 개수가 많은 집합에 노드 개수가 적은 집합을 자식으로 병합합니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.