Рекурсия с порядком возврата элементов в дереве

У меня есть рекурсивная функция, которая возвращает все узлы поддерева, учитывая начальный корневой узел.

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 с рекурсией и извлекать элементы в Preorder (A, B, C, D, E в этом примере).

(Если я поставлю доходность перед foreach, foreach никогда не будет).

Это возможно?

Ответы на вопрос(3)

Ваш ответ на вопрос