{
  "slug": "graph-dfs",
  "title": "Depth-First Search",
  "category": "Graphs",
  "difficulty": "medium",
  "complexity": {
    "time": "O(V + E)",
    "space": "O(V)"
  },
  "idea": "DFS commits to a path and follows it until it dead-ends, then backtracks to the last node with an unexplored neighbour. The call stack records the path you are currently standing on.",
  "code": [
    "dfs(node):",
    "    mark node visited",
    "    for nb in neighbours(node):",
    "        if nb not visited: dfs(nb)",
    "    return  # backtrack"
  ],
  "example": {
    "array": []
  },
  "invariant": "Each step is the real data structure at that step — the picture is a pure function of it.",
  "stepCount": 33,
  "steps": [
    {
      "i": 0,
      "op": "graph",
      "caption": "DFS from A: go as deep as possible, then back up.",
      "note": null,
      "codeLine": 1,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": []
        },
        {
          "label": "visit order",
          "items": []
        }
      ]
    },
    {
      "i": 1,
      "op": "graph",
      "caption": "Visit A and push it onto the call stack.",
      "note": null,
      "codeLine": 2,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A"
          ]
        }
      ]
    },
    {
      "i": 2,
      "op": "graph",
      "caption": "B is unvisited — go deeper.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "read",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A"
          ]
        }
      ]
    },
    {
      "i": 3,
      "op": "graph",
      "caption": "Visit B and push it onto the call stack.",
      "note": null,
      "codeLine": 2,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B"
          ]
        }
      ]
    },
    {
      "i": 4,
      "op": "graph",
      "caption": "A is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B"
          ]
        }
      ]
    },
    {
      "i": 5,
      "op": "graph",
      "caption": "C is unvisited — go deeper.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "read",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B"
          ]
        }
      ]
    },
    {
      "i": 6,
      "op": "graph",
      "caption": "Visit C and push it onto the call stack.",
      "note": null,
      "codeLine": 2,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C"
          ]
        }
      ]
    },
    {
      "i": 7,
      "op": "graph",
      "caption": "A is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C"
          ]
        }
      ]
    },
    {
      "i": 8,
      "op": "graph",
      "caption": "B is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C"
          ]
        }
      ]
    },
    {
      "i": 9,
      "op": "graph",
      "caption": "E is unvisited — go deeper.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "read",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C"
          ]
        }
      ]
    },
    {
      "i": 10,
      "op": "graph",
      "caption": "Visit E and push it onto the call stack.",
      "note": null,
      "codeLine": 2,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        }
      ]
    },
    {
      "i": 11,
      "op": "graph",
      "caption": "C is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": null,
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        }
      ]
    },
    {
      "i": 12,
      "op": "graph",
      "caption": "F is unvisited — go deeper.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "read",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "active"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        }
      ]
    },
    {
      "i": 13,
      "op": "graph",
      "caption": "Visit F and push it onto the call stack.",
      "note": null,
      "codeLine": 2,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": null,
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        }
      ]
    },
    {
      "i": 14,
      "op": "graph",
      "caption": "D is unvisited — go deeper.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "read",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        }
      ]
    },
    {
      "i": 15,
      "op": "graph",
      "caption": "Visit D and push it onto the call stack.",
      "note": null,
      "codeLine": 2,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 16,
      "op": "graph",
      "caption": "B is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 17,
      "op": "graph",
      "caption": "F is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 18,
      "op": "graph",
      "caption": "D has no unexplored neighbours left — pop it and backtrack.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 19,
      "op": "graph",
      "caption": "Back at F.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 20,
      "op": "graph",
      "caption": "E is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "active"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 21,
      "op": "graph",
      "caption": "F has no unexplored neighbours left — pop it and backtrack.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 22,
      "op": "graph",
      "caption": "Back at E.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C",
            "E"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 23,
      "op": "graph",
      "caption": "E has no unexplored neighbours left — pop it and backtrack.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 24,
      "op": "graph",
      "caption": "Back at C.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B",
            "C"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 25,
      "op": "graph",
      "caption": "C has no unexplored neighbours left — pop it and backtrack.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 26,
      "op": "graph",
      "caption": "Back at B.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 27,
      "op": "graph",
      "caption": "D is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A",
            "B"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 28,
      "op": "graph",
      "caption": "B has no unexplored neighbours left — pop it and backtrack.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 29,
      "op": "graph",
      "caption": "Back at A.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 30,
      "op": "graph",
      "caption": "C is already visited — don't follow it.",
      "note": null,
      "codeLine": 4,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "active"
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": [
            "A"
          ]
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 31,
      "op": "graph",
      "caption": "A has no unexplored neighbours left — pop it and backtrack.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": [
            "cur"
          ]
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": []
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    },
    {
      "i": 32,
      "op": "graph",
      "caption": "Done — visit order: A B C E F D.",
      "note": null,
      "codeLine": 5,
      "stats": null,
      "nodes": [
        {
          "id": "A",
          "label": "A",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "B",
          "label": "B",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "C",
          "label": "C",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "D",
          "label": "D",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "E",
          "label": "E",
          "text": null,
          "focus": "settled",
          "badges": null
        },
        {
          "id": "F",
          "label": "F",
          "text": null,
          "focus": "settled",
          "badges": null
        }
      ],
      "edges": [
        {
          "from": "A",
          "to": "B",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "A",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "B",
          "to": "C",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "B",
          "to": "D",
          "weight": null,
          "directed": false,
          "tone": null
        },
        {
          "from": "C",
          "to": "E",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "D",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        },
        {
          "from": "E",
          "to": "F",
          "weight": null,
          "directed": false,
          "tone": "settled"
        }
      ],
      "rows": [
        {
          "label": "call stack",
          "items": []
        },
        {
          "label": "visit order",
          "items": [
            "A",
            "B",
            "C",
            "E",
            "F",
            "D"
          ]
        }
      ]
    }
  ]
}