algorithm - geeks - inorder java
Algoritmo para Tree Traversal (4)
El código más simple para la mayoría de los recorridos de árboles suele ser recursivo. Para un árbol multivía como el suyo, generalmente es más fácil tener un bucle que mira cada puntero a un elemento secundario, y se llama a sí mismo con ese nodo como argumento, para todos los nodos secundarios.
Actualizar:
Encontré más de un ejemplo de lo que intento lograr: administrar datos jerárquicos en MySQL . Quiero hacerlo, pero en JavaScript porque estoy construyendo una aplicación que acepta los comentarios que están en una estructura jerárquica, para ser más específico, reddit.com. Si tiene la extensión Pretty JSON en su navegador web de Chrome, vaya a reddit y haga clic en un comentario de hilos y luego agregue .json a la url para ver lo que estoy analizando.
Obtengo los datos JSON muy bien, solo analiza los comentarios y agrega el HTML apropiado para mostrar que está anidado.
Ideas para soluciones?
ANTIGUA pregunta:
Estoy trabajando en un programa y he llegado a una parte que necesito descifrar la lógica antes de escribir el código. Estoy capturando datos que están en formato de árbol pero con la posibilidad de varios hijos para cada nodo padre y los únicos árboles en los que puedo encontrar datos son los árboles con pesos o árboles donde como máximo cada nodo tiene dos nodos secundarios. Así que estoy tratando de descubrir el algoritmo para evaluar cada nodo de un árbol como este:
startingParent[15] // [# of children]
child1[0]
child2[5]
child2ch1[4]
...
child2ch5[7]
child3[32]
...
child15[4]
Ahora, cuando trato de escribir cómo funcionaría mi algoritmo, termino escribiendo ciclos anidados para / while, pero termino escribiendo un ciclo para cada nivel de la altura del árbol que para datos dinámicos y árboles de altura desconocida con un número desconocido de niños por nodo esto no funciona. Sé que en algún momento aprendí a atravesar un árbol como este pero me está escapando por completo ahora. Alguien sabe cómo se hace esto en términos de bucles?
Si no va a utilizar la recursión, necesita una estructura de datos auxiliar. Una cola le dará un recorrido transversal en anchura, mientras que una pila le dará un recorrido transversal en profundidad. De cualquier manera, se ve más o menos así:
structure <- new stack (or queue)
push root onto structure
while structure is not empty
node <- pop top off of structure
visit(node)
for each child of node
push child onto structure
loop
Referencias de Wikipedia
Solo use recursión como
def travel(node):
for child in node.childs:
# Do something
travel(child)
Use recursividad, no bucles.
Ampliar la primera búsqueda
Profundidad primera búsqueda
Esos deberían ayudarlo a comenzar con lo que está tratando de lograr