Leetcode 669. 修剪二叉搜索树 Trim a Binary Search Tree - Python 以递归法解题
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、解题思路
递归三部曲
- 递归结束条件当遇到空节点返回None
- 递归返回值、参数
- 单层递归逻辑将每个root.val与low、high比较比low小的节点用同样方法递归右子树比high大大节点递归其左子树。
- 难点不符合条件的节点<low or > high会将另一侧符合条件的节点树赋值给其上一个节点左或右子树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def trimBST(self, root: Optional[TreeNode], low: int, high: int) -> Optional[TreeNode]:
if not root: 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
引用