void bfs(Node& root, std::function<void(Node*)> f) { std::deque<Node*> node_queue; node_queue.push_back(&root); while (!node_queue.empty()) { Node* const node = node_queue.front(); node_queue.pop_front(); f(node); for (Node* const child : node->children) { node_queue.push_back(child); } } }
static void breadthFirstSearch(Node root, Consumer<Node> f) { Queue<Node> queue = new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()) { Node polled = queue.poll(); f.accept(polled); polled.children.forEach(a -> queue.offer(a)); } }