@@ -92,13 +92,12 @@ d[find(a)] = distance
92
92
``` python
93
93
class Solution :
94
94
def validTree (self , n : int , edges : List[List[int ]]) -> bool :
95
- p = list (range (n))
96
-
97
95
def find (x ):
98
96
if p[x] != x:
99
97
p[x] = find(p[x])
100
98
return p[x]
101
99
100
+ p = list (range (n))
102
101
for a, b in edges:
103
102
if find(a) == find(b):
104
103
return False
@@ -121,10 +120,11 @@ class Solution {
121
120
p[i] = i;
122
121
}
123
122
for (int [] e : edges) {
124
- if (find(e[0 ]) == find(e[1 ])) {
123
+ int a = e[0 ], b = e[1 ];
124
+ if (find(a) == find(b)) {
125
125
return false ;
126
126
}
127
- p[find(e[ 0 ] )] = find(e[ 1 ] );
127
+ p[find(a )] = find(b );
128
128
-- n;
129
129
}
130
130
return n == 1 ;
@@ -146,26 +146,21 @@ class Solution {
146
146
public:
147
147
vector<int > p;
148
148
149
- bool validTree(int n, vector<vector<int>> &edges) {
150
- for (int i = 0; i < n; ++i)
151
- {
152
- p.push_back(i);
153
- }
154
- for (auto e : edges)
149
+ bool validTree(int n, vector<vector<int>>& edges) {
150
+ p.resize(n);
151
+ for (int i = 0; i < n; ++i) p[i] = i;
152
+ for (auto& e : edges)
155
153
{
156
- if (find( e[0]) == find( e[1]))
157
- return false ;
158
- p[find(e[0] )] = find(e[1] );
154
+ int a = e[0], b = e[1];
155
+ if (find(a) == find(b)) return 0 ;
156
+ p[find(a )] = find(b );
159
157
--n;
160
158
}
161
159
return n == 1 ;
162
160
}
163
161
164
162
int find (int x) {
165
- if (p[x] != x)
166
- {
167
- p[x] = find(p[x]);
168
- }
163
+ if (p[ x] != x) p[ x] = find(p[ x] );
169
164
return p[ x] ;
170
165
}
171
166
};
@@ -174,29 +169,58 @@ public:
174
169
### **Go**
175
170
176
171
```go
177
- var p []int
178
-
179
172
func validTree(n int, edges [][]int) bool {
180
- p = make ([]int , n)
181
- for i := 0 ; i < n; i++ {
173
+ p : = make([]int, n)
174
+ for i := range p {
182
175
p[i] = i
183
176
}
177
+ var find func(x int) int
178
+ find = func(x int) int {
179
+ if p[x] != x {
180
+ p[x] = find(p[x])
181
+ }
182
+ return p[x]
183
+ }
184
184
for _, e := range edges {
185
- if find (e[0 ]) == find (e[1 ]) {
185
+ a, b := e[0], e[1]
186
+ if find(a) == find(b) {
186
187
return false
187
188
}
188
- p[find (e[ 0 ] )] = find (e[ 1 ] )
189
+ p[find(a )] = find(b )
189
190
n--
190
191
}
191
192
return n == 1
192
193
}
194
+ ```
193
195
194
- func find (x int ) int {
195
- if p[x] != x {
196
- p[x] = find (p[x])
197
- }
198
- return p[x]
199
- }
196
+ ### ** JavaScript**
197
+
198
+ ``` js
199
+ /**
200
+ * @param {number} n
201
+ * @param {number[][]} edges
202
+ * @return {boolean}
203
+ */
204
+ var validTree = function (n , edges ) {
205
+ let p = new Array (n);
206
+ for (let i = 0 ; i < n; ++ i) {
207
+ p[i] = i;
208
+ }
209
+ function find (x ) {
210
+ if (p[x] != x) {
211
+ p[x] = find (p[x]);
212
+ }
213
+ return p[x];
214
+ }
215
+ for (const [a , b ] of edges) {
216
+ if (find (a) == find (b)) {
217
+ return false ;
218
+ }
219
+ p[find (a)] = find (b);
220
+ -- n;
221
+ }
222
+ return n == 1 ;
223
+ };
200
224
```
201
225
202
226
### ** ...**
0 commit comments