推荐答案
-- -------------------- ---- ------- ----- --------- --- -------------- ----- --------- - ---- ---------- - ---- -------- - --- --- ------------ ----- -- ---- -- ----- ------ ------------- ----- -- -------- - ---- ---------- - ------------------ ---- ----- --------- - ----------------- ---- ------ ----展开代码
本题详细解读
二叉搜索树简介
二叉搜索树(BST)是一种特殊的二叉树,其中每个节点都满足以下性质:
- 左子树中的所有节点的值都小于当前节点的值。
- 右子树中的所有节点的值都大于当前节点的值。
- 左右子树也分别是二叉搜索树。
插入节点的思路
在二叉搜索树中插入一个新节点时,我们需要遵循以下步骤:
- 比较插入值与当前节点的值:如果插入值小于当前节点的值,则递归地在左子树中插入;如果插入值大于当前节点的值,则递归地在右子树中插入。
- 找到合适的位置:当递归到某个节点为空时,说明找到了插入位置,此时创建一个新节点并将其插入到该位置。
- 返回根节点:插入完成后,返回根节点以保持树的完整性。
代码解析
- TreeNode类:定义了二叉搜索树的节点结构,每个节点包含一个值
val
,以及指向左子树和右子树的指针left
和right
。 - insert函数:递归地在二叉搜索树中插入一个新节点。如果当前节点为空,则创建一个新节点并返回;否则根据插入值与当前节点值的大小关系,递归地在左子树或右子树中插入新节点。
示例
假设我们有一个二叉搜索树如下:
5 / \ 3 7
现在我们要插入值为4
的节点,插入过程如下:
- 从根节点
5
开始,4 < 5
,所以递归到左子树3
。 - 在节点
3
处,4 > 3
,所以递归到右子树(此时为空)。 - 在空节点处插入新节点
4
,并返回该节点。 - 最终树结构变为:
5 / \ 3 7 \ 4