1. 二叉搜索树基础回顾
二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树数据结构,它满足以下性质:
- 任意节点的左子树中的所有节点值都小于该节点的值
- 任意节点的右子树中的所有节点值都大于该节点的值
- 左右子树也必须是二叉搜索树
这种结构特性使得BST在查找、插入和删除操作上都能保持O(h)的时间复杂度,其中h是树的高度。对于平衡的BST,这些操作可以达到O(log n)的效率。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. BST插入操作详解
2.1 插入操作的基本思路
在BST中插入一个新节点时,我们需要遵循BST的性质来找到合适的插入位置。与常规的二叉树不同,BST的插入位置是由节点值决定的,而不是由树的结构决定的。
插入操作的核心逻辑是:
- 从根节点开始比较
- 如果插入值大于当前节点值,则向右子树移动
- 如果插入值小于当前节点值,则向左子树移动
- 重复上述过程直到找到一个空位置(None)
- 在该位置创建新节点
2.2 递归实现解析
递归实现是最直观的方式,代码简洁但需要理解递归的调用过程:
python复制class Solution:
def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
if not root: # 找到空位置,创建新节点
return TreeNode(val)
if val > root.val: # 大于当前节点值,向右子树插入
root.right = self.insertIntoBST(root.right, val)
else: # 小于当前节点值,向左子树插入
root.left = self.insertIntoBST(root.left, val)
return root # 返回当前节点以维持树结构
递归的关键点在于:
- 每次递归调用都是在处理一个更小的子树
- 递归返回时,会重新构建整棵树的结构
- 最终返回的是更新后的整棵树的根节点
2.3 迭代实现方案
虽然递
