У меня есть рекурсивная функция, которая возвращает все узлы поддерева с учетом начального корневого узла.
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 в этом примере).
( Если я поставлю возврат yield return перед foreach, foreach никогда не произойдет).
Возможно ли это?