Инфиксный рекурсивный обход дерева - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5