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