Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

दिए गए प्रीऑर्डर ट्रैवर्सल से BST का निर्माण करें - C++ में 1 सेट करें

मान लीजिए कि हमारे पास एक प्री-ऑर्डर ट्रैवर्सल है। इस ट्रैवर्सल से। हमें पेड़ उत्पन्न करना है तो अगर ट्रैवर्सल [10, 5, 1, 7, 40, 50] जैसा है, तो पेड़ जैसा होगा -

दिए गए प्रीऑर्डर ट्रैवर्सल से BST का निर्माण करें - C++ में 1 सेट करें

इसे हल करने के लिए हम इस ट्रिक का इस्तेमाल करेंगे। चाल प्रत्येक नोड के लिए एक सीमा {min… max} निर्धारित करना है। सबसे पहले हम सीमा को {INT_MIN… INT_MAX} के रूप में प्रारंभ करेंगे। पहला नोड निश्चित रूप से रेंज में होगा, इसलिए उसके बाद हम रूट नोड बनाएंगे। लेफ्ट सबट्री बनाने के लिए, रेंज को {INT_MIN… root->data} के रूप में सेट करें। यदि कोई मान {INT_MIN… root->data} की सीमा में है, तो मान बाएँ सबट्री का हिस्सा है। सही सबट्री बनाने के लिए, रेंज को {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++ में दिए गए लेवल ऑर्डर ट्रैवर्सल से BST का निर्माण करें

    मान लीजिए कि हमारे पास एक स्तर का ऑर्डर ट्रैवर्सल है। इस ट्रैवर्सल से। हमें पेड़ उत्पन्न करना है तो अगर ट्रैवर्सल [7, 4, 12, 3, 6, 8, 1, 5, 10] जैसा है, तो पेड़ जैसा होगा - इसे हल करने के लिए, हम पुनरावर्ती दृष्टिकोण का उपयोग करेंगे। पहला तत्व जड़ होगा। दूसरा तत्व लेफ्ट चाइल्ड होगा, और तीसरा तत्व

  1. जांचें कि क्या दिया गया सरणी सी ++ में बाइनरी सर्च ट्री के प्रीऑर्डर ट्रैवर्सल का प्रतिनिधित्व कर सकता है

    मान लीजिए कि हमारे पास एक सरणी में तत्वों की एक सूची है, हमें यह जांचना होगा कि क्या तत्व बाइनरी सर्च ट्री का प्रीऑर्डर ट्रैवर्सल हो सकता है या नहीं। मान लीजिए कि एक क्रम {40, 30, 35, 80, 100} जैसा है, तो पेड़ जैसा होगा - हम इसे एक स्टैक का उपयोग करके हल कर सकते हैं। इस समस्या को हल करने के लिए ह

  1. पायथन में स्टैक का उपयोग करके दिए गए पोस्टऑर्डर ट्रैवर्सल से एक बीएसटी का निर्माण करें

    मान लीजिए कि हमारे पास बाइनरी सर्च ट्री का एक पोस्टऑर्डर ट्रैवर्सल है; हमें इससे बाइनरी सर्च ट्री ढूंढ़ना होगा। इसलिए, यदि इनपुट [6, 12, 10, 55, 45, 15] जैसा है, तो आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - फ़ंक्शन को हल करें () परिभाषित करें। यह पोस्टऑर्डर लेगा n :=पोस्