701. Insert into a Binary Search Tree

We’re asked to implement the algorithm to add a node to a binary search tree. We just recursively call this function until we hit a non-existant node, then root.left or root.right will be the new node - if the value of the new node is less than root or greater, respectively.

The solution is as follows:

class Solution:
    def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        if not root:
            return TreeNode(val)
 
        if val < root.val:
            root.left = self.insertIntoBST(root.left, val)
        else:
            root.right = self.insertIntoBST(root.right, val)
 
        return root

_ Time Complexity:

O(n) - We inspect all nodes in the binary search tree.

_ Space Complexity:

O(n) - Our call stack can grow as large as the number of nodes in the binary search tree.