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
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