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