File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time Complexity: O(n)
2
+ // Space Complexity: O(n)
3
+ export class Solution {
4
+ /**
5
+ * @param n: An integer
6
+ * @param edges: a list of undirected edges
7
+ * @return : true if it's a valid tree, or false
8
+ */
9
+ validTree ( n : number , edges : number [ ] [ ] ) : boolean {
10
+ if ( n === 0 ) return true ;
11
+ if ( edges . length !== n - 1 ) return false ;
12
+
13
+ const graph : number [ ] [ ] = Array . from ( { length : n } , ( ) => [ ] ) ;
14
+
15
+ for ( const [ s , e ] of edges ) {
16
+ graph [ s ] . push ( e ) ;
17
+ graph [ e ] . push ( s ) ;
18
+ }
19
+
20
+ const visited = new Set < number > ( ) ;
21
+
22
+ const queue = [ 0 ] ;
23
+ visited . add ( 0 ) ;
24
+
25
+ let pointer = 0 ;
26
+ while ( pointer < queue . length ) {
27
+ const currentNode = queue [ pointer ++ ] ;
28
+
29
+ for ( const nextNode of graph [ currentNode ] ) {
30
+ if ( ! visited . has ( nextNode ) ) {
31
+ queue . push ( nextNode ) ;
32
+ visited . add ( nextNode ) ;
33
+ }
34
+ }
35
+ }
36
+
37
+ return visited . size === n ;
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments