Insert & Search in BST

Problem Statement

Implement insert and search operations in a Binary Search Tree (BST).

Example: Insert 5, 3, 7, 2, 4 → Search 4 → Output: Found

Approach 1: Recursive Insertion & Search

Explanation: Insert by comparing with root and recur left/right. Search similarly.

Time Complexity: O(h), where h is height of BST

Space Complexity: O(h) due to recursion stack

function insert(node, val):
    if node == NULL:
        return new Node(val)
    if val < node.val:
        node.left = insert(node.left, val)
    else:
        node.right = insert(node.right, val)
    return node

function search(node, val):
    if node == NULL or node.val == val:
        return node
    if val < node.val:
        return search(node.left, val)
    return search(node.right, val)
          

Approach 2: Iterative Insertion & Search

Explanation: Traverse iteratively to insert or search without recursion.

Time Complexity: O(h)

Space Complexity: O(1)

function insert(root, val):
    parent = NULL
    node = root
    while node != NULL:
        parent = node
        if val < node.val:
            node = node.left
        else:
            node = node.right
    if parent == NULL:
        return new Node(val)
    if val < parent.val:
        parent.left = new Node(val)
    else:
        parent.right = new Node(val)
    return root

function search(root, val):
    node = root
    while node != NULL:
        if node.val == val:
            return node
        node = node.left if val < node.val else node.right
    return NULL