dfs<T> function

List<T> dfs<T>(
  1. Map<T, List<T>> graph,
  2. T start
)

Implementation

List<T> dfs<T>(Map<T, List<T>> graph, T start) {
  final List<T> order = [];
  final Set<T> visited = <T>{};

  void visit(T node) {
    if (visited.contains(node)) return;
    visited.add(node);
    order.add(node);
    for (final T neighbor in graph[node] ?? const []) {
      visit(neighbor);
    }
  }

  visit(start);
  return order;
}