@@ -6,32 +6,31 @@ public boolean validTree(int n, int[][] edges) {
6
6
parents [i ] = i ;
7
7
}
8
8
9
- for (int i = 0 ; i < edges .length ; i ++) {
10
- if (!union (parents , edges [i ][0 ], edges [i ][1 ])) {
9
+ for (int [] edge : edges ) {
10
+ int p1 = findParent (parents , edge [0 ]);
11
+ int p2 = findParent (parents , edge [1 ]);
12
+
13
+ if (p1 == p2 ) {
11
14
return false ;
12
15
}
16
+
17
+ union (parents , p1 , p2 );
13
18
--n ;
14
19
}
15
20
16
21
return n == 1 ;
17
22
}
18
23
19
- private int find (int [] parents , int root ) {
20
- if (parents [root ] == root ) {
21
- return root ;
24
+ private int findParent (int [] parents , int node ) {
25
+ if (parents [node ] == node ) {
26
+ return parents [ node ] ;
22
27
}
23
- return find (parents , parents [root ]);
24
- }
25
28
26
- private boolean union (int [] parents , int firstRoot , int secondRoot ) {
27
- int parentOne = find (parents , firstRoot );
28
- int parentTwo = find (parents , secondRoot );
29
-
30
- if (parentOne == parentTwo ) {
31
- return false ;
32
- }
29
+ parents [node ] = findParent (parents , parents [node ]);
30
+ return parents [node ];
31
+ }
33
32
34
- parents [ parentTwo ] = parents [ parentOne ];
35
- return true ;
33
+ private void union ( int [] parents , int p1 , int p2 ) {
34
+ parents [ p2 ] = parents [ p1 ] ;
36
35
}
37
36
}
0 commit comments