This article covers how to implement **Breadth First Search (BFS) for Graphs in Javascript**. For more information on Depth First Search and the tree implementation, see the main BFS article.

**Strategy**

Similar to BFS for trees, the Javascript implementation for BFS for graphs is to process nodes in order. The difference is there’s no longer left/right branches, and that we need to keep track of the nodes we’ve visited. This is to prevent infinite traversal.

- remove from next item of queue (bottom of queue)
- process node
- for each neighbor, if it hasn’t been visited
- add to visited list
- add to queue at end (which will be removed last)

```
let adj; //matrix of adjacencies
function BFS (node) {
let queue=[node]; //FIFO: First In, First Out
let visited=[]; //list of nodes we've visited already
while (queue.length>0) { //while queue isn't empty
const current=queue.shift(); //take from next item of queue or first item of array
//process current node
console.log(current);
//add neighbors to stack and visited list
for (let i=0; i<adj[current].length;i++) {
if (!visited[current]) {
visited.push(current);
queue.push(current);
}
}
}
}
```