Skip to content

Latest commit

 

History

History
27 lines (24 loc) · 835 Bytes

File metadata and controls

27 lines (24 loc) · 835 Bytes
// Recursive
fun searchBST(root: TreeNode?, `val`: Int): TreeNode? {
    return when {
        root == null -> null
        root.`val` == `val` -> root
        `val` > root.`val` -> searchBST(root.right, `val`)
        else -> searchBST(root.left, `val`)
    }
}

// Iterative
fun searchBST(root: TreeNode?, `val`: Int): TreeNode? {
    var node: TreeNode? = root
    while (node != null) {
        if (node.`val` == `val`) return node
        else if (`val` > node.`val`) node = node.right
        else node = node.left
    }
    return node
}
  • Time Complexity: O(h) where h is the height of the tree, wost case O(n) for skewed tree.
  • Space Complexity: O(h) for recursive and O(1) for iterative.