打卡-Microsoft-Reconstrunct Binary Tree de Preorder y Inorder
Google|Sorting A List with 3 Unique Numbers
Airbnb|First and Last Indices of an Element in a Sorted Array
Google|Create a Simple Calculator
Microsoft|Largest Product of 3 Elements
FaceBook|Find the k-th Smallest Element in a List
Apple|Maximum Profit From Stocks
Apple|Merge Overlapping Intervals
LinkedIn|Create a Balanced BST
Microsoft|Ways to Traverse a Grid
Google|Deepest Node in a Binary Tree
Facebook|First Missing Positive Integer
LinkedIn|Find the Number of Islands
Recent Microsoft interview problem.
Esta pregunta ha surgido recientemente Microsoft en la entrevista.
You are given the preorder and inorder traversals of a binary tree in the form of arrays. Write a function that reconstructs the tree represented by these traversals.
Asigne a un árbol binario un recorrido de orden de predoncia y un resultado de recorrido de orden intermedio para reconstruir el árbol binario.
Test Case:
Input1:preorder = ['a', 'b', 'd', 'e', 'c', 'f', 'g']inorder = ['d', 'b', 'e', 'a', 'f', 'c', 'g']Output1:abcdefgEl árbol binario esa/ \b c/ \ / \d e f g
【Aquí hay un espacio publicitario.
#!/usr/bin/env python3# -*- coding: utf-8 -*-from collections import dequeclass Node:def __init__(self, value):self.value = valueself.left = Noneself.right = NoneUtilice la jerarquía de propiedades str para generar un árbol determinadodef __str__(self):queue = deque()queue.append(self)result = ''while len(queue):node = queue.popleft()result += str(node.value)if node.left:queue.append(node.left)if node.right:queue.append(node.right)return resultclass Solution:El primer elemento del recorrido de reserva es el nodo raíz del árbolEl orden medio atraviesa el subárbol izquierdo donde todos los elementos del lado izquierdo del nodo raíz central componen el nodo raíz, y todos los elementos de la derecha que componen el subárbol derecho del nodo raízLos resultados del recorrido de reserva de los subárboles izquierdo y derecho se pueden encontrar en la lista de recorridos de reserva original, respectivamenteY así sucesivamente, la resolución recursivadef reconstruct(self, preorder, inorder):if not preorder and inorder:return Noneif len(preorder) == len(inorder) == 1:return Node(preorder[0])root = Node(preorder[0])rootIdx = inorder.index(root.value)root.left = self.reconstruct(preorder[1:rootIdx+1], inorder[0:rootIdx])root.right = self.reconstruct(preorder[rootIdx+1:], inorder[rootIdx+1:])return root# Test Programpreorder = ['a', 'b', 'd', 'e', 'c', 'f', 'g']inorder = ['d', 'b', 'e', 'a', 'f', 'c', 'g']tree = Solution().reconstruct(preorder, inorder)print(tree)# abcdefg# a# / \# b c# / \ / \# d e f g







Si usted tiene alguna sugerencia para los requisitos de contenido, o encontrado cualquier software, problemas de uso de la aplicación, por favor directamente en el número público de la interfaz principal para enviarme una carta privada, creo que responderá de manera oportuna.¡Gracias por su apoyo!
Cooperación: classroom.it@hotmail.com

Hi
Hola, señor.
Soy M Xiansen
Esta es una plataforma para aprender juntos
Lo tomaré. Quieres aprender
Hacer tutoriales o escribir artículos
Aprendemos inglés juntos aquí
Aprender a programar Algoritmo
Aprender todo tipo de cosas
Es divertidoSoftware útil
Recuerde volver a menudo y echar un vistazo
(^_^)a(^_^)a
Haga clic. Leer el texto original Echa un vistazo a la serie en vivo de algoritmos python
Sólo pide uno si te gusta Compartir. Te gusta Estoy mirando Tres empresas¡Vamos!
Enviar al autor