মডিউল ২১-৩ঃ 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