কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: লিঙ্কড লিস্ট ব্যবহার করে বাইনারি সার্চ ট্রি বাস্তবায়ন


এখানে লিঙ্কড লিস্ট ব্যবহার করে বাইনারি সার্চ ট্রি বাস্তবায়নের একটি C++ প্রোগ্রাম দেওয়া হলো।

ফাংশন এবং সিউডোকোড অ্যালগরিদম
শুরু
  ট্রির নোডগুলো ইনপুট নিন।
  nod স্ট্রাকচার তৈরি করুন ডেটা d, বাম পয়েন্টার l এবং ডান r ইনপুট लेने के জন্য।
  create() ফাংশন তৈরি করুন ট্রিতে নোড ইনসার্ট করার জন্য:
    c = 0 ইনিশিয়ালাইজ করুন নোড সংখ্যা হিসেবে।
    c < 6 পর্যন্ত হোইল লুপ চালান:
      রুট লিখুন।
      নোডের মান লিখুন, যদি রুটের চেয়ে বড় হয় তবে ডান পাশে অন্যথায় বাম পাশে।
  inorder() ফাংশন তৈরি করুন নোড ইনঅর্ডার ট্রভার্স করার জন্য: বাম – রুট – ডান।
  preorder() ফাংশন তৈরি করুন নোড প্রিঅর্ডার ট্রভার্স করার জন্য: রুট – বাম – ডান।
  postorder() ফাংশন তৈরি করুন নোড পোস্টঅর্ডার ট্রভার্স করার জন্য: বাম – ডান – রুট।
  main()- থেকে ফাংশনগুলো কল করুন এবং রেজাল্ট প্রিন্ট করুন।
শেষ
উদাহরণ কোড
#include 
using namespace std;

struct nod {
    nod *l, *r;
    int d;
} *r = NULL, *p = NULL, *np = NULL, *q;

void create() {
    int v, c = 0;
    while (c < 6) {
        if (r == NULL) {
            r = new nod;
            cout << "enter value of root node\n"; cin >> r->d;
            r->r = NULL; r->l = NULL;
        } else {
            p = r;
            cout << "enter value of node\n"; cin >> v;
            while (true) {
                if (v < p->d) {
                    if (p->l == NULL) {
                        p->l = new nod; p = p->l; p->d = v; p->l = NULL; p->r = NULL;
                        cout << "value entered in left\n"; break;
                    } else if (p->l != NULL) p = p->l;
                } else if (v > p->d) {
                    if (p->r == NULL) {
                        p->r = new nod; p = p->r; p->d = v; p->l = NULL; p->r = NULL;
                        cout << "value entered in right\n"; break;
                    } else if (p->r != NULL) p = p->r;
                }
            }
        }
        c++;
    }
}

void inorder(nod *p) {
    if (p != NULL) { inorder(p->l); cout << p->d << endl; inorder(p->r); }
}

void preorder(nod *p) {
    if (p != NULL) { cout << p->d << endl; preorder(p->l); preorder(p->r); }
}

void postorder(nod *p) {
    if (p != NULL) { postorder(p->l); postorder(p->r); cout << p->d << endl; }
}

int main() {
    create();
    cout << " traversal in inorder\n"; inorder(r);
    cout << " traversal in preorder\n"; preorder(r);
    cout << " traversal in postorder\n"; postorder(r);
}
আউটপুট
enter value of root node 7
enter value of node 6
value entered in left
enter value of node 4
value entered in left
enter value of node 3
value entered in left
enter value of node 2
value entered in left
enter value of node 1
value entered in left
traversal in inorder
1
2
3
4
6
7
traversal in preorder
7
6
4
3
2
1
traversal in postorder
1
2
3
4
6
7
  1. বাইনারি সার্চ ট্রিকে সিঙ্গলি লিঙ্কড লিস্টে রূপান্তর C++-এ

  2. C++-এ বাইনারি সার্চ ট্রি রিকভারি (Recover Binary Search Tree)

  3. C++-এ বাইনারি ট্রি থেকে বাইনারি সার্চ ট্রি (BST) কনভার্ট করুন

  4. বাইনারি সার্চ C++ প্রোগ্রামে