私は、開始ルートノードが与えられていると、すべてのサブツリーノードを返す再帰関数を持っています。次のツリー構造についてはツリー内のyieldリターン要素の順序の再帰
private IEnumerable<Node> getAllNodesRecursively(Node subnode)
{
foreach (Node node in subnode.Nodes)
getAllNodesRecursively(node);
yield return subnode;
}
:
foreach (Node n in getAllNodesRecursively(a))
{
Console.WriteLine(n);
}
関数は値を返します。
A
|
+--B
|
+--C
| |
| +--D
|
+--E
私のような反復処理しようとし
。再帰でyield-returnを使い、Preorder(この例ではA、B、C、D、E)の要素を検索したいと考えています。
(foreachの前にyield yieldを置くとforeachは起こりません)。
これは可能ですか?
てみましたか?私はそれが呼ばれると思います。 – okrumnow
はい、あなたは正しいです。 yield returnはコードの残りの部分をスキップしません。それは値の復帰を許しても機能を実行し続けるための文法的な砂糖のようだ。私の悪い。 –