I have a recursive function that returns all subtree nodes, given the starting root node.
private IEnumerable<Node> getAllNodesRecursively(Node subnode)
{
foreach (Node node in subnode.Nodes)
getAllNodesRecursively(node);
yield return subnode;
}
For the following tree structure:
A
|
+--B
|
+--C
| |
| +--D
|
+--E
When I try to iterate as such:
foreach (Node n in getAllNodesRecursively(a))
{
Console.WriteLine(n);
}
the function returns the only the A value.
I wish to use yield-return with recursion and retrieve elements in the Preorder (A, B, C, D, E in this example).
(If I put the yield return before the foreach, the foreach would never happen).
Is this possible?
Have you tried something like:
Your implementation is calling
getAllNodesRecursively
recursively, but ignoring its return value.