File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number } n
3
+ * @param {number[][] } edges
4
+ * @return {number[] }
5
+ */
6
+ var findMinHeightTrees = function ( n , edges ) {
7
+ if ( n === 1 ) return [ 0 ]
8
+ if ( n === 2 ) return [ 0 , 1 ]
9
+ const g = { }
10
+ const degree = new Array ( n ) . fill ( 0 )
11
+ for ( const [ u , v ] of edges ) {
12
+ degree [ u ] ++
13
+ degree [ v ] ++
14
+ if ( g [ u ] == null ) g [ u ] = [ ]
15
+ if ( g [ v ] == null ) g [ v ] = [ ]
16
+ g [ u ] . push ( v )
17
+ g [ v ] . push ( u )
18
+ }
19
+ let q = [ ]
20
+ for ( let i = 0 ; i < n ; i ++ ) {
21
+ if ( degree [ i ] === 1 ) q . push ( i )
22
+ }
23
+ let cnt = 0
24
+ while ( q . length ) {
25
+ const size = q . length
26
+ const tmp = [ ]
27
+ for ( let i = 0 ; i < size ; i ++ ) {
28
+ const node = q [ i ]
29
+ cnt ++
30
+ for ( const nxt of ( g [ node ] || [ ] ) ) {
31
+ degree [ nxt ] --
32
+ if ( degree [ nxt ] === 1 ) {
33
+ tmp . push ( nxt )
34
+ }
35
+ }
36
+ }
37
+
38
+ q = tmp
39
+ if ( n - cnt <= 2 ) break
40
+ }
41
+
42
+ const res = [ ]
43
+ while ( q . length ) {
44
+ res . push ( q . pop ( ) )
45
+ }
46
+ return res
47
+ } ;
48
+
49
+ // another
50
+
1
51
/**
2
52
* @param {number } n
3
53
* @param {number[][] } edges
You can’t perform that action at this time.
0 commit comments