Алгоритм, использующий рекурсию, выглядит так:
printNode(Node node)
{
printTitle(node.title)
foreach (Node child in node.children)
{
printNode(child); //<-- recursive
}
}
Вот версия, которая также отслеживает, насколько глубоко вложенная рекурсия (то есть, печатаем ли мы дочерние элементы корня, внуков, пра-внуков и т. Д.):
printRoot(Node node)
{
printNode(node, 0);
}
printNode(Node node, int level)
{
printTitle(node.title)
foreach (Node child in node.children)
{
printNode(child, level + 1); //<-- recursive
}
}