File tree Expand file tree Collapse file tree 1 file changed +22
-20
lines changed
BFS/310.Minimum-Height-Trees Expand file tree Collapse file tree 1 file changed +22
-20
lines changed Original file line number Diff line number Diff line change @@ -4,24 +4,26 @@ class Solution {
4
4
{
5
5
if (n==1 ) return {0 };
6
6
if (n==2 ) return {0 ,1 };
7
-
8
- vector<int >inDegree (n);
7
+
9
8
vector<vector<int >>next (n);
10
- for (auto edge:edges)
9
+ vector<int >degree (n);
10
+
11
+ for (auto edge: edges)
11
12
{
12
- inDegree[edge[0 ]]++;
13
- inDegree[edge[1 ]]++;
14
- next[edge[0 ]].push_back (edge[1 ]);
15
- next[edge[1 ]].push_back (edge[0 ]);
13
+ int a = edge[0 ], b = edge[1 ];
14
+ degree[a]++;
15
+ degree[b]++;
16
+ next[a].push_back (b);
17
+ next[b].push_back (a);
16
18
}
17
19
18
20
queue<int >q;
19
21
vector<int >visited (n);
20
22
for (int i=0 ; i<n; i++)
21
23
{
22
- if (inDegree [i]==1 )
23
- q.push (i);
24
- }
24
+ if (degree [i]==1 )
25
+ q.push (i);
26
+ }
25
27
26
28
int count = 0 ;
27
29
while (!q.empty ())
@@ -31,26 +33,26 @@ class Solution {
31
33
{
32
34
int cur = q.front ();
33
35
q.pop ();
36
+ count++;
34
37
visited[cur] = 1 ;
35
- count++;
36
38
for (int nxt: next[cur])
37
39
{
38
- inDegree [nxt]--;
39
- if (inDegree [nxt]==1 )
40
+ degree [nxt]--;
41
+ if (degree [nxt]==1 )
40
42
q.push (nxt);
41
- }
42
- }
43
+ }
44
+ }
43
45
if (count==n-1 || count==n-2 )
44
- break ;
46
+ break ;
45
47
}
46
48
47
49
vector<int >rets;
48
- for ( int i= 0 ; i<n; i++ )
50
+ while (!q. empty () )
49
51
{
50
- if (visited[i]== 0 )
51
- rets. push_back (i);
52
+ rets. push_back (q. front ());
53
+ q. pop ();
52
54
}
53
-
55
+
54
56
return rets;
55
57
56
58
}
You can’t perform that action at this time.
0 commit comments