Приведите пример прямого рекурсивного обхода дерева - C#

Узнай цену своей работы

Формулировка задачи:

Есть обычное иерархическое дерево (Control Tree). Как рекурсивно в прямом порядке пройтись по всем вложенным ветвям от корня? Уровень вложения может быть любой. Я не домашнюю работу делаю, не подумайте плохого. Просто хочется понять, что такое рекурсия и как она вообще работает. На всех сайтах в качестве примера рекурсии приводят вычисление факториала, что вообще ни разу не является удачным примером.

Решение задачи: «Приведите пример прямого рекурсивного обхода дерева»

textual
Листинг программы
public static void Main(string[] args)
        {
            Tree t = new Tree();
            t.Add(6);
            t.Add(5);
            t.Add(12);
            t.Add(76);
            t.Add(32);
            t.Add(8);
            t.Add(1);
            t.Print();
 
            Console.ReadLine();
        }
 
        class Tree
        {
            class TreeElem
            {
                public TreeElem left;
                public TreeElem right;
                public int value;
                public  TreeElem(TreeElem left, TreeElem right, int value)
                {
                    this.left = left;
                    this.right = right;
                    this.value = value;
                }
            }
 
            private TreeElem _root;
 
            public Tree()
            {
                _root = null;
            }
 
            public void Add(int value)
            {
                _add(ref _root, value);
            }
 
            private void _add(ref TreeElem node, int value)
            {
                if (node == null)
                {
                    node = new TreeElem(null, null, value);
                }
                else
                {
                    if (node.value >= value)
                    {
                        _add(ref node.left, value);
                    }
                    else
                    {
                        _add(ref node.right, value);
                    }
                }
            }
 
            public void Print()
            {
                _print(_root);
            }
 
            private void _print(TreeElem node)
            {
                if (node == null) return;
                _print(node.left);
                Console.WriteLine(node.value);
                _print(node.right);
            }
 
        }

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


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

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

9   голосов , оценка 3.889 из 5
Похожие ответы