Skip to content

Commit ebd7763

Browse files
committed
Disjoin set algorithm added to graph section
1 parent b312567 commit ebd7763

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.thealgorithms.graph;
2+
3+
public class DisjointSet {
4+
int[] parent;
5+
int[] rank;
6+
public DisjointSet(int n){
7+
parent = new int[n];
8+
rank = new int[n];
9+
for(int i=0; i<n; i++){
10+
parent[i] = i;
11+
rank[i] = 1;
12+
}
13+
}
14+
15+
int findLeader(int x){
16+
if(parent[x]==x){
17+
return parent[x];
18+
}
19+
int leader = findLeader(parent[x]);
20+
parent[x] = leader;
21+
return leader;
22+
}
23+
24+
boolean isSame(int x, int y){
25+
return findLeader(x)==findLeader(y);
26+
}
27+
28+
void merge(int x, int y){
29+
int xLeader = findLeader(x);
30+
int yLeader = findLeader(y);
31+
if(xLeader != yLeader){
32+
if(rank[xLeader]<rank[yLeader]){
33+
parent[xLeader] = yLeader;
34+
}else{
35+
parent[yLeader] = xLeader;
36+
if(rank[xLeader] == rank[yLeader]){
37+
rank[xLeader] += 1;
38+
}
39+
}
40+
}
41+
}
42+
}

0 commit comments

Comments
 (0)