From c18dee8660c00da3fd6a7608b8c43453b922d4e5 Mon Sep 17 00:00:00 2001 From: Anuska Chatterjee <144933964+anuska2772@users.noreply.github.com> Date: Mon, 21 Oct 2024 22:37:12 +0530 Subject: [PATCH] Create dfs.java this is a dfs algorithm, specially meant for beginners. #2 --- javaAlgo/dfs.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 javaAlgo/dfs.java diff --git a/javaAlgo/dfs.java b/javaAlgo/dfs.java new file mode 100644 index 0000000..fb2a039 --- /dev/null +++ b/javaAlgo/dfs.java @@ -0,0 +1,47 @@ +import java.util.LinkedList; + +public class GraphDFS { + private LinkedList[] adjLists; + private boolean[] visited; + + // Graph Constructor + GraphDFS(int vertices) { + adjLists = new LinkedList[vertices]; + visited = new boolean[vertices]; + + for (int i = 0; i < vertices; i++) { + adjLists[i] = new LinkedList<>(); + } + } + + // Add an edge to the graph + void addEdge(int src, int dest) { + adjLists[src].add(dest); + } + + // DFS traversal of the vertices reachable from v + void DFS(int vertex) { + visited[vertex] = true; + System.out.print(vertex + " "); + + for (int adj : adjLists[vertex]) { + if (!visited[adj]) { + DFS(adj); + } + } + } + + public static void main(String[] args) { + GraphDFS graph = new GraphDFS(4); + + graph.addEdge(0, 1); + graph.addEdge(0, 2); + graph.addEdge(1, 2); + graph.addEdge(2, 0); + graph.addEdge(2, 3); + graph.addEdge(3, 3); + + System.out.println("Depth First Search starting from vertex 2:"); + graph.DFS(2); + } +}