[Série Leetcode Algoritmo] [] [] Média ordem anterior e uma árvore binária sequência de configuração pré-venda

tópico:

ligações Tópico:  https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/

 

ideias de resolução de problemas:

Preorder travessia: root -> subárvore esquerda -> subárvore direita

Preorder: subárvore esquerda -> root -> subárvore direita

Postorder: esquerda sub -> subárvore direita -> root

 

De acordo com a regra de travessia, o primeiro valor antes de o know pré-venda é a raiz atual

Porque nenhuma duplicatas descrição título, o uso do valor do nó raiz, a pré-venda é dividido em partes esquerda e direita, a sub-árvore esquerda está a esquerda, a direita é a subárvore direita

Repita este passo até ter esgotado todos os elementos

 

implementação de código:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
        def build_help(preorder, inorder):
            if 0 == len(preorder) or 0 == len(inorder):
                return None
            
            in_index = inorder.index(preorder[0])
            if in_index == -1:
                return None
            
            node = TreeNode(preorder[0])
            del preorder[0]
            del inorder[in_index]
            node.left = build_help(preorder, inorder[:in_index])
            node.right = build_help(preorder, inorder[in_index:])
            return node
        
        return build_help(preorder, inorder)

 

Publicado 100 artigos originais · ganhou elogios 4 · Vistas 1457

Acho que você gosta

Origin blog.csdn.net/songyuwen0808/article/details/105401308
Recomendado
Clasificación