Files
dsa-tutoring/notes-and-examples/2026.07.21/depth-first-search.md

1.2 KiB

Traversal introduction

Many algorithms that involve graphs must involve some way to traverse the elements of a graph. The two simplest ways of traversal are depth-first search (DFS) and breadth-first search (BFS). The major difference here is the order in which nodes are traversed.

If we start from vertex 0 in the tree, in what order would you expect depth-first search to traverse the nodes? (There are multiple correct answers!)

        0
       / \
      1   2
     / \
    3   4

Note that a single traversal step checks for already-visited nodes. So, if the path is 0 -> 1 -> 3, the path cannot become 0 -> 1 -> 3 -> 1.

What about starting from vertex 0 in this graph?

    0 --- 1
    |     |
    3 --- 2

What about this one?

        0
       / \
      1   5
     / \   \
    2   3   6
     \ /   /
      4   7
       \ /
        8

Formalizing the algorithm

Based on these examples, can we create a formal algorithm that takes a starting node, producing a valid traversal path for all three graphs?

An example for this graph:

    0 --- 1
    |     |
    3 --- 2
  • Arguments: starting node 0
  • Expected output: