32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
using GrokAlgorithms.Chapter5_BreadthFirstSearch;
|
|
|
|
// Тут используется реализация алгоритма поиска в ширину на графе, BFS.
|
|
// Поиск в глубину (DFS) точно такой же, но вместо очереди использует стек
|
|
|
|
int count = 0;
|
|
|
|
// Команда для построения дерева
|
|
TreeNode<int> BuildTreeCommand(int value, int depth, int branchingFactor)
|
|
{
|
|
var node = new TreeNode<int>(value) { Comment = $"{count++}" };
|
|
if (depth == 0) return node;
|
|
|
|
for (int i = 1; i <= branchingFactor; i++)
|
|
node.Children.Add(BuildTreeCommand(value + i * 10, depth - 1, branchingFactor));
|
|
return node;
|
|
}
|
|
|
|
// Команда для печати дерева
|
|
void PrintTreeCommand(TreeNode<int> node, string indent = "")
|
|
{
|
|
Console.WriteLine($"{indent}{node.Value} [{node.Comment}] {(node.Selected ? " Selected" : "")}");
|
|
foreach (var child in node.Children)
|
|
PrintTreeCommand(child, indent + " ");
|
|
}
|
|
|
|
var root = BuildTreeCommand(1, 3, 2);
|
|
var found = Bfs.Search(root, (num) => num > 25);
|
|
if (found != null)
|
|
found.Selected = true;
|
|
PrintTreeCommand(root);
|