Back

Graph Traversal Visualization (BFS & DFS)

Interactive Traversal

Visualize Breadth-First Search (BFS) and Depth-First Search (DFS) on a sample graph.

600ms

Select a start node and traversal type, then click 'Start Traversal'.

Traversal Order

    Queue / Stack

      Graph Traversal Explained

      Graph traversal algorithms systematically visit every node in a graph exactly once. The two most common methods are Breadth-First Search (BFS) and Depth-First Search (DFS).

      Conceptual Pseudocode

      function BFS(graph, startNode) {
          let queue = [startNode];
          let visited = new Set([startNode]);
          let traversalOrder = [];
      
          while (queue.length > 0) {
              let currentNode = queue.shift(); // Dequeue
              traversalOrder.push(currentNode);
      
              for (let neighbor of graph.getNeighbors(currentNode)) {
                  if (!visited.has(neighbor)) {
                      visited.add(neighbor);
                      queue.push(neighbor); // Enqueue
                  }
              }
          }
          return traversalOrder;
      }
      
      function DFS_Iterative(graph, startNode) {
          let stack = [startNode];
          let visited = new Set(); // Visited when popped, or pushed?
          let traversalOrder = [];
      
          while (stack.length > 0) {
              let currentNode = stack.pop(); // Pop
      
              if (!visited.has(currentNode)) {
                   visited.add(currentNode);
                   traversalOrder.push(currentNode);
      
                   // Push neighbors in reverse order for typical DFS result
                   let neighbors = graph.getNeighbors(currentNode).reverse();
                   for (let neighbor of neighbors) {
                       if (!visited.has(neighbor)) {
                           stack.push(neighbor); // Push
                       }
                   }
              }
          }
          return traversalOrder;
      }