開始ルートノードを指定して、すべてのサブツリーノードを返す再帰関数があります。
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の前にyield returnを配置すると、foreachは発生しません)。
これは可能ですか?