🌳 修剪二叉搜索树(Trim a Binary Search Tree)详解与实现
📌 题目描述
给你一棵二叉搜索树(BST)的根节点 root
,以及两个整数 low
和 high
,表示一个闭区间 [low, high]
。
请你通过修剪这棵二叉搜索树,使得所有节点的值都落在 [low, high]
范围内。修剪过程中,不允许改变保留下来的节点的相对结构,即:
- 父子关系不应被改变;
- 原有顺序应当保留;
- 返回修剪后新的根节点。
可以证明,修剪后仍然是一棵有效的 BST,并且结果唯一。
🧠 解题分析
🎯 关键词解析
- **二叉搜索树(BST)**的特点:对于任意节点
root
,其左子树的所有节点值 <root.val
,右子树的所有节点值 >root.val
。 - 修剪:移除值不在
[low, high]
范围内的节点。 - 结构不变:不能调整剩余节点的连接方式,只能移除节点。
🪓 修剪策略
根据 BST 的性质,