Leetcode Tag Search | Back

701. Insert into a Binary Search Tree

Category: /leetcode

Leetcode Link | Tree template

You are given the root node of a binary search tree (BST) and a value to insert into the tree. Return the root node of the BST after the insertion. It is guaranteed that the new value does not exist in the original BST.

Notice that there may exist multiple valid ways for the insertion, as long as the tree remains a BST after insertion. You can return any of them.

Solution:

def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
    if not root: return TreeNode(val)
    if val < root.val:
        root.left = self.insertIntoBST(root.left, val)
    elif val > root.val:
        root.right = self.insertIntoBST(root.right, val)
    return root

Iteration

def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
    node = root
    while node:
        if val > node.val:
            # insert right leaf
            if not node.right:
                node.right = TreeNode(val)
                return root
            else:
                node = node.right
        else:
            # insert left leaf
            if not node.left:
                node.left = TreeNode(val)
                return root
            else:
                node = node.left
    return TreeNode(val)

讨论

提示

  • 如果看不到讨论部分, 请暂时关掉adblock in Firefox/Chrome
  • 本网站使用Javascript实现评论功能, 此处外链对提高您的网站PR没有帮助. (潜台词: 请不要灌水, 谢谢)