কম্পিউটার

প্রদত্ত প্রি-অর্ডার ট্রাভার্সাল থেকে BST তৈরি করুন - C++ এ 1 সেট করুন


ধরুন আমাদের একটি প্রি অর্ডার ট্রাভার্সাল আছে। এই ট্রাভার্সাল থেকে. আমাদের গাছ তৈরি করতে হবে তাই যদি ট্রাভার্সাল হয় [10, 5, 1, 7, 40, 50], তাহলে গাছটি হবে −

প্রদত্ত প্রি-অর্ডার ট্রাভার্সাল থেকে BST তৈরি করুন - C++ এ 1 সেট করুন

এটি সমাধান করার জন্য, আমরা এই কৌশলটি ব্যবহার করব। কৌশলটি হল প্রতিটি নোডের জন্য একটি পরিসর {মিনিট… সর্বোচ্চ} সেট করা। প্রথমে আমরা পরিসরটিকে {INT_MIN… INT_MAX} হিসাবে শুরু করব৷ প্রথম নোডটি অবশ্যই রেঞ্জের মধ্যে থাকবে, তাই এর পরে আমরা রুট নোড তৈরি করব। বাম সাবট্রি তৈরি করতে, পরিসরটিকে {INT_MIN… root->data} হিসাবে সেট করুন৷ যদি একটি মান {INT_MIN… রুট->ডেটা} পরিসরে থাকে, তাহলে মানটি বাম সাবট্রির অংশ। সঠিক সাবট্রি তৈরি করতে, পরিসরটিকে {root->data… max… INT_MAX} হিসেবে সেট করুন।

উদাহরণ

#include <iostream>
using namespace std;
class node {
   public:
      int data;
      node *left;
      node *right;
};
node* getNode (int data) {
   node* temp = new node();
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
node* makeTreeUtil( int pre[], int* preord_index, int key, int min, int max, int size ) {
   if( *preord_index >= size )
   return NULL;
   node* root = NULL;
   if( key > min && key < max ){
      root = getNode( key );
      *preord_index += 1;
      if (*preord_index < size){
         root->left = makeTreeUtil( pre, preord_index, pre[*preord_index], min, key, size );
         root->right = makeTreeUtil( pre, preord_index, pre[*preord_index],key, max, size );
      }
   }
   return root;
}
node *makeTree (int pre[], int size) {
   int preord_index = 0;
   return makeTreeUtil( pre, &preord_index, pre[0], INT_MIN, INT_MAX, size );
}
void inord (node* node) {
   if (node == NULL)
      return;
   inord(node->left);
   cout << node->data << " ";
   inord(node->right);
}
int main () {
   int pre[] = {10, 5, 1, 7, 40, 50};
   int size = sizeof( pre ) / sizeof( pre[0] );
   node *root = makeTree(pre, size);
   cout << "Inorder traversal: ";
   inord(root);
}

আউটপুট

Inorder traversal: 1 5 7 10 40 50

  1. একটি প্রদত্ত উত্স থেকে একটি গন্তব্য C++ এ সমস্ত পথ প্রিন্ট করুন

  2. C++ এ প্রদত্ত লেভেল অর্ডার ট্রাভার্সাল থেকে BST তৈরি করুন

  3. একটি প্রদত্ত অ্যারে C++ এ বাইনারি সার্চ ট্রি-এর প্রি-অর্ডার ট্রাভার্সাল প্রতিনিধিত্ব করতে পারে কিনা তা পরীক্ষা করুন

  4. পাইথনে স্ট্যাক ব্যবহার করে প্রদত্ত পোস্টঅর্ডার ট্রাভার্সাল থেকে একটি BST তৈরি করুন