BFS is a graph traversal method that explores all the neighbors of a node before going deeper. It’s ideal for finding the shortest path in an unweighted graph and is widely used in real-world applications like web crawling, routing, and level order traversal in trees.
Breadth First Search (BFS) Traversal on Graph
class Solution {
public:
vector<int> bfs(vector<vector<int>> &adj){
queue<int> q;
int n=adj.size();
vector<bool> vis(n,false);
q.push(0);
vector<int> t;
t.push_back(0);
vis[0]=true;
while(!q.empty()){
int top=q.front();
q.pop();
for(int i=0;i<adj[top].size();i++){
int top1=adj[top][i];
if(!vis[top1]){
t.push_back(top1);
vis[top1]=true;
q.push(top1);
}
}
}
return t;
}
};
int main() {
vector<vector<int>> adj = {
{1, 2},
{0},
{0}
};
Solution s;
vector<int> result = s.bfs(adj);
for(int i=0;i<result.size();i++) {
cout << result[i] << " ";
}
cout << endl;
return 0;
}
Input Adjacency List: 0 → 1, 2 1 → 0 2 → 0 Output 0 1 2
How It Works
BFS starts at node 0 and visits all its neighbors (1 and 2) first. It uses a queue to track which node to explore next. Once all neighbors are processed, it moves level by level until all reachable nodes are visited.
Time and Space Complexity
-
Time Complexity: O(V + E)
-
Space Complexity: O(V)