Depth First Search (DFS) is one of the most commonly used algorithms in graph theory. It’s used to explore all the vertices and edges of a graph systematically, and is a fundamental building block for many advanced problems in computer science.
In this blog, we’ll write a simple and clean C++ program to perform DFS traversal on a graph using an adjacency list.
Depth First Search (DFS) Traversal of a Graph in C++
What Is DFS?
DFS explores as deep as possible along a branch before backtracking. It uses recursion (or a stack) to track the visited nodes.
Problem Statement
Given an undirected graph represented as an adjacency list, perform a DFS traversal starting from node 0.
Input Format
The graph will be represented as an adjacency list using a vector of vectors.
Example:
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
void dfs1(vector<vector<int>>& adj,vector<bool>& vis,vector<int>& ans,int ind){
vis[ind]=true;
ans.push_back(ind);
for(int i=0;i<adj[ind].size();i++){
if(!vis[adj[ind][i]]){
dfs1(adj,vis,ans,adj[ind][i]);
}
}
}
vector<int> dfs(vector<vector<int>>& adj) {
int n=adj.size();
vector<bool> vis(n,false);
vector<int> ans;
dfs1(adj,vis,ans,0);
return ans;
}
};
int main() {
vector<vector<int>> adj={
{1, 2},
{0},
{0}
};
Solution obj;
vector<int> result=obj.dfs(adj);
cout<< "DFS Traversal: ";
for(int i=0;i<result.size();i++) {
cout<<result[i]<<" ";
}
cout<<endl;
return 0;
}
Input
Graph (Adjacency List):