Una forma de lograr su objetivo podría ser siempre comenzar a explorar una ruta de una manera DFS desde la raíz, y una vez que llegue a una hoja, imprima la ruta, quite la hoja y todos sus padres hasta el primer nodo de grado mayor que dos . Tienes que hacer esta eliminación “recursiva”: si solo eliminaste las hojas, en algún momento confundirías el padre de una hoja con una hoja en sí.
El algoritmo haría lo siguiente, en el gráfico de su imagen:
- Imprimir A, B, E.
- Eliminar E pero no B (tiene grado 3)
- Imprimir A, B, F.
- Eliminar F y B, que ahora tiene grado 2.
- Imprimir A, C, G.
- Eliminar G y C, que tiene grado 2.
- Imprimir A, D, H.
- Eliminar H pero no D (tiene grado 3).
- Imprimir A, D, I.
- Eliminar I y D (tiene grado 2).
- Solo queda la raíz. Regreso.
- ¿La programación competitiva se volverá aún más difícil?
- ¿Cómo debo tomar una entrada de orden 10 ^ 250 usando una matriz de caracteres en C?
- ¿Cuáles son los usos prácticos de 2-3 árboles o árboles rojo-negros?
- ¿Qué temas matemáticos necesito aprender antes de comenzar a aprender inducción, recursión y programación dinámica?
- ¿Cuál es la diferencia entre la recursión normal y la recursiva de la cola con ejemplos?