두 노드가 같은 그래프에 속하는지 판별하는 알고리즘
연산
Find 연산 - 루트 노드를 찾는 연산 , 시간 복잡도 : O(1)
Union 연산 - 노드를 합치는 연산
특징
👉 노드 번호와 부모 노드로 초기화된 노드들을
Union 연산을 통해 부모노드와 자식연산 구분
x-y 연결
x와 y의 루트 노드를 찾아 비교하기
union(x,y)
x = find(x) //x 루트
y = find(y) //y 루트
if x! = y // y와 x의 루트가 같지 안으면
//값이 작은쪽을 부모로 둔다
if x<y -> parent[y] = x
else -> parent[x] = y
할당 연산을 이용해서 편향트리가 되지 않도록 균형을 잡아줌
find(x) // x의 루트 노드 찾기
if x == parent -> return x
return parent[x] = find(parent[x])