merge: Modify Graph bfs method (#847)

This commit is contained in:
YATIN KATHURIA
2021-11-26 22:16:23 +05:30
committed by GitHub
parent de2708990d
commit 061218b693

View File

@ -39,21 +39,19 @@ class Graph {
* @param {number} source The source vertex to start BFS.
*/
bfs (source, output = value => console.log(value)) {
const queue = []
const queue = [[source, 0]] // level of source is 0
const visited = new Set()
queue.unshift([source, 0]) // level of source is 0
visited.add(source)
while (queue.length) {
const front = queue[0]
const node = front[0]
const level = front[1]
queue.shift() // remove the front of the queue
const [node, level] = queue.shift() // remove the front of the queue
if (visited.has(node)) { // visited
continue
}
visited.add(node)
output(`Visited node ${node} at level ${level}.`)
for (const next of this.adjacencyMap[node]) {
if (!visited.has(next)) { // not visited
queue.unshift([next, level + 1]) // level 1 more than current
visited.add(next)
}
queue.push([next, level + 1]) // level 1 more than current
}
}
}