[Leetcode] 0105. Construir un árbol binario a partir del recorrido en preorden e inorden

Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github

Dadas dos matrices de enteros hacer un pedido y en orden dónde hacer un pedido es el recorrido en preorden de un árbol binario y en orden es el recorrido en orden del mismo árbol, construcción y retorno el árbol binario.

 

Ejemplo 1:

Aporte: preorden = [3,9,20,15,7], enorden = [9,3,15,20,7]
Producción: [3,9,20,nulo,nulo,15,7]

Ejemplo 2:

Aporte: preorden = [-1], inorden = [-1]
Producción: [-1]

 

Restricciones:

  • 1 <= preorder.length <= 3000
  • inorder.length == preorder.length
  • -3000 <= preorden[i], inorden[i] <= 3000
  • hacer un pedido y en orden consistir en único valores.
  • Cada valor de en orden También aparece en hacer un pedido.
  • hacer un pedido es garantizado ser el recorrido previo del árbol.
  • en orden es garantizado ser el recorrido en orden del árbol.
 

Tabla de contenido

Pitón

				
					Complejidad de tiempo #: O(n) Complejidad de espacio #: O(n) de escribir importar Lista, Clase opcional Solución: def buildTree(self, preorder: List[int], inorder: List[int]) -> Opcional[NodoTree]: def dfs(izquierda: int, derecha: int): preorderIndex no local si izquierda > derecha: devuelve Ninguno rootValue = preorder[preorderIndex] raíz = NodoTree(rootValue) preorderIndex += 1 raíz.izquierda = dfs(izquierda, inorderMap[rootValue] - 1) raíz.derecha = dfs(inorderMap[rootValue] + 1, derecha) devuelve raíz preorderIndex = 0 inorderMap = {} para i, valor en enumerar(inorder): inorderMap[valor] = i devuelve dfs(0, len(inorder) - 1) preorder = [3, 9, 20, 15, 7] inorder = [9, 3, 15, 20, 7] print(Solution().buildTree(preorder, inorder))
				
			
es_ESEspañol