应用题-二叉树专题-修剪二叉搜索树(非常值得寻味的题)

管理员
```python # 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]: # 修剪二叉搜索树 # 若xhigh 则x的右子树均>high 将x的left 挂到 parent的right if not root: return None # !important:节点是如何移除的 if root.val < low: # val < low 符合的区间在右子树 return self.trimBST( root.right, low, high ) if root.val > high: # 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 ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧