[Глава 5] Поиск в ширину

This commit is contained in:
Пытков Роман
2025-07-27 22:07:09 +03:00
parent 455ef1ba54
commit 08b37fe0e1
5 changed files with 96 additions and 23 deletions

View File

@@ -0,0 +1,23 @@
using GrokAlgorithms.Chapter5_BreadthFirstSearch;
static class Bfs
{
public static TreeNode<T>? Search<T>(TreeNode<T> root, Func<T, bool> condition)
{
Queue<TreeNode<T>> queue = new();
queue.Enqueue(root);
HashSet<TreeNode<T>> visited = [];
while (queue.Count > 0)
{
var curr = queue.Dequeue();
if (visited.Contains(curr))
continue;
if (condition(curr.Value))
return curr;
foreach (var child in curr.Children)
queue.Enqueue(child);
visited.Add(curr);
}
return null;
}
}