Reconstruir un árbol desde preorden e inorden
Un árbol binario con valores distintos queda determinado por dos de sus recorridos:
- preorden: la raíz, luego el subárbol izquierdo en preorden, luego el derecho en preorden;
- inorden: el subárbol izquierdo en inorden, luego la raíz, luego el derecho en inorden.
Dados ambos, reconstruye el árbol.
Entrada
La primera línea tiene \(n\) \((1 \le n \le 3000)\), la segunda el recorrido en preorden y la tercera el recorrido en inorden. Los valores son distintos \((|v| \le 3000)\) y los recorridos corresponden a un mismo árbol.
Salida
El árbol en el formato de LeetCode, en dos líneas: la cantidad \(k\) de elementos y luego los \(k\) elementos del recorrido por niveles, con null para los hijos que faltan (sin los null del final).
Ejemplo 1
Entrada
5
3 9 20 15 7
9 3 15 20 7
Salida
7
3 9 20 null null 15 7
Ejemplo 2
Entrada
1
-1
-1
Salida
1
-1
Basado en el problema 105 de LeetCode, Construct Binary Tree from Preorder and Inorder Traversal, adaptado a entrada y salida estándar; enunciado redactado para este juez. Es parte de la lista Grind 75 de Yangshun Tay.
Comentarios