Инфиксный рекурсивный обход дерева - C#
Формулировка задачи:
Задача написать инфиксный рекурсивный обход BST-дерева. Возвращает IEnumerable<int>.
Написала процедуру, выводит вершину без детей 3 раза, вершину с одним ребенком 2 раза, вершину без детей один раз. Но в правильном порядке. Поскажите, как исправить
public IEnumerable<int> EnumerateIntInRec(Node node)
{
if (node.left == null)
{
yield return node.value;
}
else
{
foreach (int ch in EnumerateIntInRec(node.left))
{
yield return ch;
}
}
yield return node.value;
if (node.right == null)
{
yield return node.value;
}
else
{
foreach (var ch in EnumerateIntInRec(node.right))
{
yield return ch;
}
}
}Решение задачи: «Инфиксный рекурсивный обход дерева»
textual
Листинг программы
public IEnumerable<int> EnumerateIntInRec(Node node)
{
if (node == null) yield break;
foreach (int ch in EnumerateIntInRec(node.left)) yield return ch;
yield return node.Value;
foreach (var ch in EnumerateIntInRec(node.right)) yield return ch;
}