如何在二叉搜索树中插入一个节点?

推荐答案

-- -------------------- ---- -------
----- ---------
    --- -------------- -----
        --------- - ----
        ---------- - ----
        -------- - ---

--- ------------ -----
    -- ---- -- -----
        ------ -------------
    -----
        -- -------- - ----
            ---------- - ------------------ ----
        -----
            --------- - ----------------- ----
    ------ ----
展开代码

本题详细解读

二叉搜索树简介

二叉搜索树(BST)是一种特殊的二叉树,其中每个节点都满足以下性质:

  • 左子树中的所有节点的值都小于当前节点的值。
  • 右子树中的所有节点的值都大于当前节点的值。
  • 左右子树也分别是二叉搜索树。

插入节点的思路

在二叉搜索树中插入一个新节点时,我们需要遵循以下步骤:

  1. 比较插入值与当前节点的值:如果插入值小于当前节点的值,则递归地在左子树中插入;如果插入值大于当前节点的值,则递归地在右子树中插入。
  2. 找到合适的位置:当递归到某个节点为空时,说明找到了插入位置,此时创建一个新节点并将其插入到该位置。
  3. 返回根节点:插入完成后,返回根节点以保持树的完整性。

代码解析

  • TreeNode类:定义了二叉搜索树的节点结构,每个节点包含一个值val,以及指向左子树和右子树的指针leftright
  • insert函数:递归地在二叉搜索树中插入一个新节点。如果当前节点为空,则创建一个新节点并返回;否则根据插入值与当前节点值的大小关系,递归地在左子树或右子树中插入新节点。

示例

假设我们有一个二叉搜索树如下:

现在我们要插入值为4的节点,插入过程如下:

  1. 从根节点5开始,4 < 5,所以递归到左子树3
  2. 在节点3处,4 > 3,所以递归到右子树(此时为空)。
  3. 在空节点处插入新节点4,并返回该节点。
  4. 最终树结构变为:
纠错
反馈

纠错反馈