diff --git a/java/searching/DFS.java b/java/searching/DFS.java new file mode 100644 index 000000000..672f77982 --- /dev/null +++ b/java/searching/DFS.java @@ -0,0 +1,40 @@ +import java.util.*; + +class DFS { + private final LinkedList[] adjLists; + private final boolean[] visited; + + DFS(int vertices) { + adjLists = new LinkedList[vertices]; + visited = new boolean[vertices]; + for (int i = 0; i < vertices; i++) + adjLists[i] = new LinkedList<>(); + } + + void addEdge(int src, int dest) { + adjLists[src].add(dest); + } + + void dfsAlgorithm(int vertex) { + visited[vertex] = true; + System.out.print(vertex + " "); + + for (int adj : adjLists[vertex]) { + if (!visited[adj]) + dfsAlgorithm(adj); + } + } + + public static void main(String args[]) { + DFS g = new DFS(4); + + g.addEdge(0, 1); + g.addEdge(0, 2); + g.addEdge(1, 2); + g.addEdge(2, 3); + + System.out.println("Following is Depth First Traversal"); + + g.dfsAlgorithm(2); + } +}