正确代码:
class Solution:
def trimBST(self, root, L, R):
"""
:type root: TreeNode
:type L: int
:type R: int
:rtype: TreeNode
"""
if not root:
return root
if root.val < L:
return self.trimBST(root.right, L, R)
if root.val > R:
return self.trimBST(root.left, L, R)
root.left = self.trimBST(root.left, L, R)
root.right = self.trimBST(root.right, L, R)
return root
#错题分析
class Solution:
def trimBST(self, root, L, R):
"""
:type root: TreeNode
:type L: int
:type R: int
:rtype: TreeNode
"""
root = self.fun_2(root, L, R)
if root is None:
return root
self.func_1(root, root.left, L, R)
self.func_1(root, root.right, L, R)
return root
#找根节点
def func_1(self, parent, node, L, R):
if node is None:
return
elif node.val>R:
parent.right = node.left
elif node.val<L:
parent.left = node.right
self.func_1(node, node.left, L, R)
self.func_1(node, node.right, L, R)
#进行裁剪
def fun_2(self, node, L, R):
if L<=node.val<=R or node is None:
return node
elif node.val>R:
node = node.left#在这个地方出现问题,缺少了递归..
elif node.val<L:
node = node.right
return self.fun_2(node, L, R)
ps:好菜啊!