代码随想录第二十一天刷题
class Solution:
def trimBST(self, root: Optional[TreeNode], low: int, high: int) -> Optional[TreeNode]:
if root is None:
return None
if root.val < low:
return self.trimBST(root.right, low, high)
if root.val > high:
return self.trimBST(root.left, low, high)
root.left = self.trimBST(root.left, low, high)
root.right = self.trimBST(root.right, low, high)
return root
# ---------- 修剪 BST ----------
# 核心:利用 BST 的有序性
#
# 三种情况:
# 1. root.val < low → 返回修剪后的右子树
# 2. root.val > high → 返回修剪后的左子树
# 3. 在区间内 → 修剪左右子树并返回自己
今天觉得自己又行了,先是看了删除BST,然后再去修剪会简单一些
