LeetCode 701. 二叉搜索树中的插入操作

发布时间 2023-07-04 20:41:37作者: 小星code

题目链接:LeetCode 701. 二叉搜索树中的插入操作

题意:

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。

解题思路:

按照二叉搜索树的定义,直接进行模拟操作就可以了

递归代码:

func insertIntoBST(root *TreeNode, val int) *TreeNode {
    var res TreeNode
    res.Val = val
    if root == nil {
        return &res
    }
    if val > root.Val{
        root.Right = insertIntoBST(root.Right,val)
    }
    if val < root.Val{
        root.Left = insertIntoBST(root.Left,val)
    }
    return root
   
}

迭代法代码

func insertIntoBST(root *TreeNode, val int) *TreeNode {
    if root == nil {
        return &TreeNode{Val:val}
    }
    node := root
    var pnode *TreeNode
    for node != nil {
        if val > node.Val {
            pnode = node
            node = node.Right
        } else {
            pnode = node
            node = node.Left
        }
    }
    if val > pnode.Val {
        pnode.Right = &TreeNode{Val: val}
    } else {
        pnode.Left = &TreeNode{Val: val}
    }
    return root
}