Java Depth-First Search (DFS) Tutorial 🎯

beginner
24 min

Java Depth-First Search (DFS) Tutorial 🎯

Welcome to the Java Depth-First Search tutorial! In this lesson, we'll learn about the Depth-First Search (DFS) algorithm, one of the essential graph traversal methods. By the end of this lesson, you'll be able to implement DFS in Java and understand its applications in real-world scenarios. 💡 Pro Tip: DFS is often used for problems related to trees, graphs, and mazes.

What is Depth-First Search (DFS)? 📝

DFS is a graph traversal algorithm that explores as far as possible along each branch before backtracking. It's a recursive algorithm that visits all vertices in a graph by exploring as far as possible along each path.

DFS in Java: Step by Step 📝

Let's dive into the implementation of DFS in Java. Here's a simple step-by-step guide:

1. Representing the Graph

First, we need to represent our graph. In Java, we can use an adjacency list or matrix to represent the graph. Here's an example of an adjacency list:

java
// Representing the graph List<List<Integer>> adjList = new ArrayList<>(); // Initializing the graph for (int i = 0; i < 6; i++) { adjList.add(new ArrayList<>()); } // Adding edges adjList.get(0).add(1); adjList.get(1).add(0); adjList.get(1).add(2); adjList.get(2).add(1); adjList.get(2).add(3); adjList.get(3).add(2); adjList.get(3).add(4); adjList.get(4).add(3); adjList.get(4).add(5); adjList.get(5).add(4);

2. Implementing DFS

Now, let's implement DFS. We'll create a dfs method that takes a graph (adjacency list) and a starting vertex as input.

java
// Visited array to keep track of visited vertices boolean[] visited = new boolean[6]; // DFS method void dfs(int vertex, List<List<Integer>> adjList) { // Mark the current vertex as visited visited[vertex] = true; System.out.print(vertex + " "); // Recursively visit all adjacent vertices for (int neighbor : adjList.get(vertex)) { if (!visited[neighbor]) { dfs(neighbor, adjList); } } }

3. Running DFS

Finally, let's run DFS starting from vertex 0.

java
// Mark all vertices as not visited for (int i = 0; i < visited.length; i++) { visited[i] = false; } // Run DFS starting from vertex 0 dfs(0, adjList);

Quiz Time 📝

Question: Which algorithm is used for exploring as far as possible along each branch before backtracking?

  • Breadth-First Search (BFS)
  • Depth-First Search (DFS)

Correct: Depth-First Search (DFS)

Explanation: DFS explores as far as possible along each branch before backtracking, while BFS explores all vertices at the same level before moving to the next level.

Advanced DFS 📝

In real-world applications, you might encounter cyclic graphs or graphs with multiple connected components. To handle these cases, we can modify the DFS algorithm to find cycles or count connected components.

Conclusion 📝

You've now learned the basics of the Depth-First Search algorithm in Java! Practice implementing DFS on different graphs, and you'll become more comfortable with this essential graph traversal method. Good luck on your coding journey! ✅