У меня есть рекурсивная функция, которая возвращает все узлы поддерева, учитывая начальный корневой узел.
private IEnumerable<Node> getAllNodesRecursively(Node subnode)
{
foreach (Node node in subnode.Nodes)
getAllNodesRecursively(node);
yield return subnode;
}
Для следующей древовидной структуры:
A
|
+--B
|
+--C
| |
| +--D
|
+--E
Когда я пытаюсь выполнить итерацию как таковую:
foreach (Node n in getAllNodesRecursively(a))
{
Console.WriteLine(n);
}
функция возвращает единственное значение A.
Я хочу использовать yield-return с рекурсией и извлекать элементы в Предзаказе (в данном примере A, B, C, D, E).
(Если бы я поставил доходность перед foreach, foreach никогда бы не появился).
Возможно ли это?