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

ইনপুট বাইনারি ট্রি কি বাইনারি ট্রির সাবট্রি কিনা চেক করার C++ প্রোগ্রাম


একটি বাইনারি ট্রি হলো একটি ট্রি ডেটা স্ট্রাকচার যাতে প্রতিটি নোডে সর্বোচ্চ দুটি চাইল্ড থাকে, যাদের বাম চাইল্ড ও ডান চাইল্ড বলে সংজ্ঞায়িত করা হয়।

অ্যালগরিদম

শুরু    function identical():        دوটি নোড r1 এবং r2 প্যারামিটার হিসেবে নিন।       r1 এবং r2 NULL হলে          true রিটার্ন করুন।       r1 বা r2 NULL হলে          false রিটার্ন করুন।       রিটার্ন (r1->d r2->d এর সমান এবং          Function Identical(r1->l, r2->l) কল করুন এবং          Function Identical(r1->r, r2->r) কল করুন );       function Subtree(node *T, node *S) :           if (S == NULL) then             return true;          if (T == NULL) then             return false;          if (Identical(T, S) কল করুন)             return true;          return Subtree(T->l, S) or Subtree(T->r, S); শেষ।


উদাহরণ কোড

#include <iostream> using namespace std; struct n {    int d;    struct n* l;    struct n* r; }; bool Identical(struct n * r1, struct n *r2) {    if (r1 == NULL && r2 == NULL)       return true;    if (r1 == NULL || r2 == NULL)       return false;       return (r1->d == r2->d && Identical(r1->l, r2->l) && Identical(r1->r, r2->r) ); } bool Subtree(struct n *T, struct n *S) {    if (S == NULL)       return true;    if (T == NULL)       return false;    if (Identical(T, S))       return true;       return Subtree(T->l, S) || Subtree(T->r, S); } struct n* newN(int d) {    struct n* nod =    (struct n*)malloc(sizeof(struct n));    nod->d = d;    nod->l = NULL;    nod->r = NULL;    return(nod); } int main() {    struct n *T = newN(24);    T->r = newN(2);    T->r->r = newN(5);    T->l = newN(7);    T->l->l = newN(3);    T->l->l->r = newN(40);    T->l->r = newN(6);    struct n *S = newN(20);    S->r = newN(5);    S->l = newN(3);    S->l->r = newN(50);    if (Subtree(T, S))       cout << "দেয়া ট্রি বাইনারি ট্রির সাবট্রি" << "\n";    else       cout << "দেয়া ট্রি বাইনারি ট্রির সাবট্রি নয়" << "\n";       struct n *T1 = newN(30);       T1->r = newN(20);       T1->r->r = newN(19);       T1->l = newN(17);       T1->l->l = newN(4);       T1->l->l->r = newN(40);       T1->l->r = newN(15);       struct n *S1 = newN(17);       S1->r = newN(15);       S1->l = newN(4);       S1->l->r = newN(40);       if (Subtree(T1, S1))          cout << "দেয়া ট্রি বাইনারি ট্রির সাবট্রি";       else          cout << "দেয়া ট্রি বাইনারি ট্রির সাবট্রি নয়";          getchar();          return 0; }

আউটপুট

দেয়া ট্রি বাইনারি ট্রির সাবট্রি নয় দেয়া ট্রি বাইনারি ট্রির সাবট্রি

  1. C++-এ বাইনারি ট্রি হাইট-ব্যালেন্সড কিনা যাচাই করার প্রোগ্রাম

  2. বাইনারি ট্রির পূর্ণতা যাচাই C++-এ

  3. C++-এ একটি বাইনারি ট্রি SumTree কিনা তা যাচাই করা

  4. C++-এ একটি বাইনারি ট্রি অন্য বাইনারি ট্রির সাবট্রি কিনা তা যাচাই করা