Приведите пример прямого рекурсивного обхода дерева - 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);
}
}