Вызов функции MakeTree(4, gameboard)
не работает должным образом, он только печатает первые validMove-Nodes. Что я делаю не так?
private Move MakeTree(int depth, Board b)
{
Move Tree = GenerateValidMoves(b, b.MyLocation);
if (depth == 0) return Tree;
foreach (TreeNode<Move> Child in Tree.Children)
{
Board temp = Board.ApplyMove(b, Child.Value);
Child.Children.Add(MakeTree(depth-1, temp));
}
return Tree;
}
Дает мне следующий вывод:
[S 1|1, D: 2|1 (East)] Depth=1, Children =1
[] Depth=2, Children =0
[S 1|1, D: 1|2 (South)] Depth=1, Children =1
[]Depth=2, Children =0
Отображение каждого сгенерированного встроенного дерева дает мне следующий вывод:
[S 1|1, D: 2|1 (East)] Depth=1, Children =0
[S 1|1, D: 1|2 (South)] Depth=1, Children =0
[S 2|1, D: 3|1 (East)] Depth=1, Children =0
[S 2|1, D: 2|2 (South)] Depth=1, Children =0
[S 3|1, D: 4|1 (East)] Depth=1, Children =0
[S 3|1, D: 3|2 (South)] Depth=1, Children =0
[S 4|1, D: 5|1 (East)] Depth=1, Children =0
[S 4|1, D: 4|2 (South)] Depth=1, Children =0
[S 4|1, D: 5|1 (East)] Depth=1, Children =0
...
Так что, очевидно, он посещает только первый сгенерированный узел.