Depth First Search (DFS) is a graph traversal algorithm used to explore nodes and edges in a graph. In Java, DFS starts at a selected vertex and explores as far as possible along each branch before backtracking. It employs a stack or recursion to keep track of the vertices that need to be visited next.
Implementation of DFS for a graph
Graph Representation: The graph can be represented using adjacency lists, where each vertex stores a list of its adjacent vertices.
Traversal Algorithm: Implement a recursive or use a stack to perform the DFS traversal. The function should visit each vertex and recursively visit its adjacent vertices until all vertices are visited.
Visited Marking: Maintain a boolean array or set to keep track of visited vertices to avoid revisiting them during traversal.
Start Vertex: Choose a starting vertex from which to begin the traversal. Typically, DFS can be started from any vertex in the graph.
Traversal Path: Record the order in which vertices are visited to obtain the traversal path.
Java program for DFS of a Graph
import java.util.*;
class Graph {
private int V; // number of vertices
private LinkedList<Integer> adj[]; // Adjacency list representation
Graph(int v) {
V = v;
adj = new LinkedList[v];
for (int i = 0; i < v; ++i)
adj[i] = new LinkedList();
}
void addEdge(int v, int w) {
adj[v].add(w);
}
void DFSUtil(int v, boolean visited[]) {
visited[v] = true;
System.out.println(v + " ");
Iterator<Integer> i = adj[v].listIterator();
while (i.hasNext()) {
int n = i.next();
if (!visited[n])
DFSUtil(n, visited);
}
}
void DFS(int v) {
boolean visited[] = new boolean[V];
DFSUtil(v, visited);
}
public static void main(String args[]) {
Graph graph = new Graph(5);
graph.addEdge(0, 1);
graph.addEdge(0, 2);
graph.addEdge(1, 2);
graph.addEdge(1, 4);
graph.addEdge(2, 0);
graph.addEdge(2, 3);
graph.addEdge(3, 4);
graph.addEdge(4, 4);
System.out.println("Following is Depth First Traversal (starting from vertex 1):");
graph.DFS(1);
}
}
Output:
Following is Depth First Traversal (starting from vertex 1): 1 2 0 3 4