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

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

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

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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • खाली स्टैक बनाएं

  • पहले मान को रूट के रूप में बनाएं, और इसे स्टैक में पुश करें।

  • अब शौच करते रहें जबकि स्टैक खाली न हो और अगला मान स्टैक टॉप एलिमेंट से अधिक हो, इसे अंतिम पॉप किए गए नोड के सही बच्चे के रूप में बनाएं। अब नए नोड को स्टैक पर पुश करें।

  • जब अगला मान शीर्ष तत्व से कम हो, तो इसे स्टैक शीर्ष तत्व के बाएं बच्चे के रूप में बनाएं। अब नए नोड को स्टैक में पुश करें।

  • चरण 2 और 3 को तब तक दोहराएं जब तक कि हम सभी अग्रिम-आदेश सूची तत्वों की जांच नहीं कर लेते।

उदाहरण

#include <iostream>
#include <stack>
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* constructTree ( int pre[], int size ) {
   stack<node*> stk;
   node* root = getNode( pre[0] );
   stk.push(root);
   int i;
   node* temp;
   for ( i = 1; i < size; ++i ) {
      temp = NULL;
      while ( !stk.empty() && pre[i] > stk.top()->data ) {
         temp = stk.top();
         stk.pop();
      }
      if ( temp != NULL) {
         temp->right = getNode( pre[i] );
         stk.push(temp->right);
      } else {
         node* peek_node = stk.top();
         peek_node->left = getNode( pre[i] );
         stk.push(stk.top()->left);
      }
   }
   return root;
}
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 = constructTree(pre, size);
   cout << "Inorder traversal: ";
   inord(root);
}

आउटपुट

Inorder traversal: 1 5 7 10 40 50

  1. सी ++ प्रोग्राम किसी दिए गए बाइनरी ट्री के प्रीऑर्डर रिकर्सिव ट्रैवर्सल करने के लिए

    ट्री ट्रैवर्सल ग्राफ ट्रैवर्सल का एक रूप है। इसमें पेड़ में प्रत्येक नोड को ठीक एक बार जांचना या प्रिंट करना शामिल है। बाइनरी सर्च ट्री के प्रीऑर्डर ट्रैवर्सल में ट्री के प्रत्येक नोड को क्रम (रूट, लेफ्ट, राइट) में जाना शामिल है। बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल का एक उदाहरण इस प्रकार है। एक बाइ

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

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

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

    मान लीजिए कि हमारे पास दो ट्रैवर्सल अनुक्रम हैं प्रीऑर्डर और पोस्टऑर्डर, हमें इन दो अनुक्रमों से बाइनरी ट्री उत्पन्न करना है। तो अगर अनुक्रम [1,2,4,5,3,6,7], [4,5,2,6,7,3,1] हैं, तो आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - उत्तर:=पूर्व [0] मान लेकर एक ट्री नोड बनाएं, स्टैक:=ख