bfs<T> function
Implementation
List<T> bfs<T>(Map<T, List<T>> graph, T start) {
final List<T> order = [];
final Set<T> visited = <T>{};
final List<T> queue = <T>[];
visited.add(start);
queue.add(start);
while (queue.isNotEmpty) {
final T node = queue.removeAt(0);
order.add(node);
for (final T neighbor in graph[node] ?? const []) {
if (!visited.contains(neighbor)) {
visited.add(neighbor);
queue.add(neighbor);
}
}
}
return order;
}