bfs<T> function

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

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;
}