Graph traversal Algorithms:

Breadth first search is graph traversal algorithm. In this algorithm, lets say we start with node i, then we will visit neighbours of i, then neighbours of neighbours of i and so on.

It is very much similar to which is used in binary tree. We use queue to traverse graph. We put first node in queue . It repeatedly extracts node and put its neighbours in the queue. Only difference with respect to binary tree is that we need to track if node have been visited before or not. It can be easily done with help of boolean variable visited in the node. If node have been already visited then we won’t visit it again.

Algorithm:

Steps for Breadth first search:

Create empty queue and push root node to it.

Do the following when queue is not empty

Pop a node from queue and print it.

Find neighbours of node with the help of adjacency matrix and check if node is already visited or not.

Push neighbours of node into queue if not null

Lets understand with the help of example:
Lets say graph is:

Java BFS Example

There are two ways to represent a graph.

Using Neighbours list

Using Adjacency Matrix

Using Neighbours list

In this, you can have List<Node> as neighbours in Node class as below.