2.Search in a Binary Search Tree
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
.
You are given the root
of a binary search tree (BST) and an integer val
.
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: []
Solution Iteratively:-
class Solution
{
public:
TreeNode *searchBST(TreeNode *root, int val)
{
TreeNode *t = root;
while(t!=NULL){
if(t->val == val){
break;
}
else if(t->val > val){
t = t->left;
}
else{
t = t->right;
}
}
return t;
}
};
Solution Recursively:-
class Solution
{
public:
TreeNode *searchBST(TreeNode *root, int val)
{
if (root == NULL || root->val == val)
{
return root;
}
else if (root->val > val)
{
return searchBST(root->left, val);
}
else
{
return searchBST(root->right, val);
}
}
};
Time Complexity of searching in a BST
Maximum number of comparisons is h
i.e height of binary search tree
So time complexity O(h) i.e O(log n).
Last updated
Was this helpful?