qué - Atravesando un árbol de objetos en c#
polimorfismo c# (2)
Un algoritmo que usa recursión es el siguiente:
printNode(Node node)
{
printTitle(node.title)
foreach (Node child in node.children)
{
printNode(child); //<-- recursive
}
}
Aquí hay una versión que también realiza un seguimiento de cuán profundamente anidada está la recursión (es decir, si estamos imprimiendo hijos de la raíz, nietos, bisnietos, etc.):
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
}
}
Tengo un árbol que consta de varios objetos donde cada objeto tiene un nombre (cadena), id (int) y posiblemente una matriz de elementos secundarios, que son del mismo tipo. ¿Cómo reviso todo el árbol e imprimo todos los identificadores y nombres?
Soy nuevo en la programación y francamente, estoy teniendo problemas para entender esto porque no sé cuántos niveles hay. En este momento estoy usando un bucle foreach para buscar los objetos principales directamente debajo de la putrefacción, esto significa que no puedo obtener los hijos.
Bueno, siempre puedes usar recursividad, pero en un escenario de programación del "mundo real", puede llevar a cosas malas si no haces un seguimiento de la profundidad.
Aquí hay un ejemplo usado para un árbol binario: http://www.codeproject.com/KB/recipes/BinarySearchTree.aspx
Buscaría listas vinculadas de Google y otras estructuras de árbol si es nuevo en la estructura de datos completa. Hay una gran cantidad de conocimiento que se tiene.