dfs<T> function
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;
}