打卡-Apple-Tree Serialización
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
Uber|Minimum Removals for Valid Parenthesis
Twitter|Largest BST in a Binary Tree
Microsoft|Reconstrunct Binary Tree from Preorder and Inorder
Recent Apple interview problem.
Esta pregunta ha surgido recientemente Apple en la entrevista.
You are given the root of a binary tree. You need to implement 2 functions:
1. serialize(root) which serializes the tree into a string representation
2. deserialize(s) which deserializes the string back to the original tree that it represents
Para serializar y volver a sellar el árbol binario:
1. Serialización: Un árbol binario dado está representado por una secuencia, y un nodo vacío está representado por un archivo .
2. Deseción: Dado un árbol binario serializado, reconstruya el árbol binario.
Test Case:
Serialización:
Input1:
1
/ \
3 4
/ \ \
2 5 7
Output1:
1 3 2 # # 5 # # 4 # 7 # #
Antisecu serialización
Input2:
1 3 2 # # 5 # # 4 # 7 # #
Output2:
132547
El orden frontal atraviesa el árbol de salida
// 1
// / \
// 3 4
// / \ \
// 2 5 7
【Aquí hay un espacio publicitario.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Node class
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
Define la forma en que se genera el árbol a medida que se atraviesa en el orden de reserva del árbol.
def __str__(self):
preOrder = ''
preOrder += str(self.value)
if self.left:
preOrder += str(self.left)
if self.right:
preOrder += str(self.right)
return preOrder
#前序遍历输出树的结点, #表示该结点为空.
def serialize(tree):
if tree is None:
return '#'
return '{} {} {}'.format(tree.value, serialize(tree.left), serialize(tree.right))
def deserialize(string):
def helper():
value = next(values)
if value == '#':
return None
node = Node(int(value))
node.left = helper()
node.right = helper()
return node
values = iter(string.split())
return helper()
# Test Program
# 1
# / \
# 3 4
# / \ \
# 2 5 7
tree = Node(1)
tree.left = Node(3)
tree.left.left = Node(2)
tree.left.right = Node(5)
tree.right = Node(4)
tree.right.right = Node(7)
print(serialize(tree))
# 1 3 2 # # 5 # # 4 # 7 # #
print(deserialize('1 3 2 # # 5 # # 4 # 7 # #'))
# 132547
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
Te gusta Compartir. Te gusta Estoy mirando Tres empresas¡Vamos!
Enviar al autor