[669] diario de la fuerza de la hebilla árbol de búsqueda binaria ajuste | recursiva

título Descripción

Dado un árbol binario de búsqueda, mientras que el mínimo y el máximo dada L R. límite límite Mediante la poda del árbol de búsqueda binaria, de modo que los valores de todos los nodos de la [L, R] en el (R> = L). Es posible que necesite cambiar la raíz del árbol, por lo que los resultados deben devolver bien la poda de árbol binario de búsqueda del nuevo nodo raíz.

pensamiento algoritmo

Binary Tree recursiva ajuste natural.

Primera edición:

class Solution:
    def trimBST(self, root: TreeNode, L: int, R: int) -> TreeNode:
        if root==None:return None
        # if root.val<L:root=root.right
        # elif root.val>R:root=root.left
        # if root==None:return None
        # root.left=self.trimBST(root.left,L,R)
        # root.right=self.trimBST(root.right,L,R)
        # return root

Aquí Insertar imagen Descripción
La salida es [3,2,4], la respuesta es [3, null, 4].
Claramente, cuando un nodo, root = root.right, a continuación, el nodo 2 no ha sido verificada directamente

# root.left=self.trimBST(root.left,L,R)
# root.right=self.trimBST(root.right,L,R)

Luego regresó.

Después de que el pensamiento simple:
Segunda edición:

class Solution:
    def trimBST(self, root: TreeNode, L: int, R: int) -> TreeNode:
        if root==None:return None
        if root.val<L:root=self.trimBST(root.right,L,R)
        elif root.val>R:root=self.trimBST(root.left,L,R)
        else:
            root.left=self.trimBST(root.left,L,R)
            root.right=self.trimBST(root.right,L,R)
        return root

Cuando la ejecución: 52 ms, venció el 85,43% de los usuarios en toda presentación python3

Publicados 210 artículos originales · elogios ganado 20 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/Heart_for_Ling/article/details/104909305
Recomendado
Clasificación