Necesito algoritmos de recorrido de árbol para árboles arbitrarios en orden de profundidad tanto primero como primero en anchura. La parte difícil es que necesito poder comenzar desde un nodo arbitrario y continuar hasta que se atraviese otro nodo específico.Atravesando una estructura de árbol general comenzando desde un nodo arbitrario en C#
Ahora, puedo usar cualquiera de los algoritmos comunes e ignorar los nodos atravesados hasta que toco el nodo de inicio y continúo hasta el nodo final (que actualmente hago) pero esto es feo e ineficiente.
Cualquier sugerencia, por favor.
ACTUALIZACIÓN: Cada uno de mis nodos tiene una identificación asociada. En algunos casos, tengo referencias de nodo de inicio y final para comenzar. En otros casos, me dan dos Ids, compruebo si el nodo dado es el nodo de inicio o el nodo final al inspeccionar sus identificadores. Utilizo un recorrido transversal en profundidad para encontrar el nodo de inicio. Los nodos de inicio y fin pueden estar en cualquier parte de la jerarquía. Espero que alguien pueda tener una idea para el caso en el que ya tengo referencias tanto para el nodo de inicio como para el nodo final. Por cierto, los nodos en el árbol es en realidad ordenados según un orden de clasificación, que se inicia a partir de 0 para cada uno de los sub-nodos de un nodo y hay un nodo de raíz
¿Cómo encontrarías el nodo de inicio en un árbol sin atravesarlo? – BrokenGlass
¿Ya tiene * el * nodo? De lo contrario, necesitaría una segunda estructura de datos para acelerar la búsqueda de los nodos de inicio/finalización. – harold
Especifique cómo está estructurado su árbol. ¿Hay algún tipo de orden implementado? ¿Cómo se relacionan los nodos? –