মডিউল ২১-৩ঃ Search in BST
Binary SearchTree এ duplicate value নিয়ে আমরা গত module এ জেনেছি। এই module এ আমরা binary search tree এর search operation দেখবো।
এই module এ আমরা আগে code থেকে বুঝবো তারপর complexity বুঝবো।
প্রথমে এভাবে Node নিয়ে নিবো doubly linked list এর মতো।
class Node
{
public:
int val;
Node *left;
Node *right;
Node(int val)
{
this->val = val;
this->left = NULL;
this->right = NULL;
}
};এরপর input function বানাতে হবে যাতে করে আমরা bst তে value input নিতে পারি।
Node *input_tree()
{
int val;
cin >> val;
Node *root;
if (val == -1)
root = NULL;
else
root = new Node(val);
queue<Node *> q;
if (root)
q.push(root);
while (!q.empty())
{
// 1. এখানে queue এর front বের করে আনা হবে।
Node *p = q.front();
q.pop();
// 2. এখানে left & right child গুলো নেয়া হবে।
int l, r;
cin >> l >> r;
Node *myLeft;
Node *myRight;
if (l == -1)
myLeft = NULL;
else
myLeft = new Node(l);
if (r == -1)
myRight = NULL;
else
myRight = new Node(r);
p->left = myLeft;
p->right = myRight;
// 3. এখানে children গুলো push করতে হবে
if (p->left)
q.push(p->left);
if (p->right)
q.push(p->right);
}
return root;
}এরপর একটা search function বানাতে হবে। এই function একটা root নিতে হবে আরেকটা value. এর পর বাকিটা code এ দেখা যাক।
BST এর Time complexity: O (h) or O (height)
Best Case: O(logN)
(Perfect or complete binary tree এর ক্ষেত্রে)

Worst Case: O(N)
(কোনো level complete না থাকলে সে ক্ষেত্রে)

এখানে height এর উপর যেহেতু BST er time complexity depend করে তাই এর time complexity আমরা বলতে পারি
Full Code:
Last updated