Files
2025-07-27 22:07:09 +03:00

23 lines
646 B
C#

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