Приведите пример прямого рекурсивного обхода дерева - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д