我有一个递归函数,它返回给定起始根节点的所有子树节点。
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将永远不会发生。)
这是可能的吗?