File tree Expand file tree Collapse file tree 1 file changed +9
-11
lines changed Expand file tree Collapse file tree 1 file changed +9
-11
lines changed Original file line number Diff line number Diff line change @@ -39,21 +39,19 @@ class Graph {
39
39
* @param {number } source The source vertex to start BFS.
40
40
*/
41
41
bfs ( source , output = value => console . log ( value ) ) {
42
- const queue = [ ]
42
+ const queue = [ [ source , 0 ] ] // level of source is 0
43
43
const visited = new Set ( )
44
- queue . unshift ( [ source , 0 ] ) // level of source is 0
45
- visited . add ( source )
44
+
46
45
while ( queue . length ) {
47
- const front = queue [ 0 ]
48
- const node = front [ 0 ]
49
- const level = front [ 1 ]
50
- queue . shift ( ) // remove the front of the queue
46
+ const [ node , level ] = queue . shift ( ) // remove the front of the queue
47
+ if ( visited . has ( node ) ) { // visited
48
+ continue
49
+ }
50
+
51
+ visited . add ( node )
51
52
output ( `Visited node ${ node } at level ${ level } .` )
52
53
for ( const next of this . adjacencyMap [ node ] ) {
53
- if ( ! visited . has ( next ) ) { // not visited
54
- queue . unshift ( [ next , level + 1 ] ) // level 1 more than current
55
- visited . add ( next )
56
- }
54
+ queue . push ( [ next , level + 1 ] ) // level 1 more than current
57
55
}
58
56
}
59
57
}
You can’t perform that action at this time.
0 commit comments