# [Leetcode 700] Search in a Binary Search Tree

2 min readSep 27, 2021

--

**Description:**

You are given the `root`

of a binary search tree (BST) and an integer `val`

.

Find the node in the BST that the node’s value equals `val`

and return the subtree rooted with that node. If such a node does not exist, return `null`

.

**Example 1:**

**Input:** root = [4,2,7,1,3], val = 2

**Output:** [2,1,3]

**Example 2:**

**Input:** root = [4,2,7,1,3], val = 5

**Output:** []

**Constraints:**

- The number of nodes in the tree is in the range
`[1, 5000]`

. `1 <= Node.val <= 107`

`root`

is a binary search tree.`1 <= val <= 107`

**C code solution (recursive):**

`struct TreeNode* searchBST(struct TreeNode* root, int val){`

//boundary

if(!root)

return NULL;

//main

struct TreeNode* ptr = root;

if(val < ptr->val)

ptr = searchBST(ptr->left, val);

else if(val > ptr->val)

ptr = searchBST(ptr->right, val);

else

return ptr;

return ptr;

}

**C code solution (iterative):**

`struct TreeNode* searchBST(struct TreeNode* root, int val){`

struct TreeNode* ptr = root;

while(ptr){

if(val < ptr->val)

ptr = ptr->left;

else if(val > ptr->val)

ptr = ptr->right;

else

return ptr;

}

return ptr;

}