# 二叉搜索树中的插入操作 (opens new window)

  • 难度:Medium
  • 标签:递归

# 刷题思路

  • [x] 递归
  • [x] 迭代

# 方法 1 递归

  • 复杂度:
    • 时间 O(logn)
    • 空间 O(logn)
var insertIntoBST = function(root, val) {
    if (!root) return new TreeNode(val)
    if (val < root.val) root.left = insertIntoBST(root.left, val)
    if (val > root.val) root.right = insertIntoBST(root.right, val)
    return root
};

# 方法 2 迭代

  • 复杂度:
    • 时间 O(logn)
    • 空间 O(1)
var insertIntoBST = function(root, val) {
    if (!root) return new TreeNode(val)
    let curr = root
    while (curr) {
        if (val < curr.val) {
            if (curr.left) {
                curr = curr.left
            } else {
                curr.left = new TreeNode(val)
                break
            }
        }
        if (val > curr.val) {
            if (curr.right) {
                curr = curr.right
            } else {
                curr.right = new TreeNode(val)
                break
            }
        }
    }
    return root
};

JS刷题记录 Leetcode-js (opens new window) 每周都会更新刷题心得或者题解, 你的点赞或 star 都将助力我产出更好内容~