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

सी ++ में बाइनरी सर्च ट्री में प्रीऑर्डर अनुक्रम सत्यापित करें

मान लीजिए हमारे पास संख्याओं का एक क्रम है; हमें यह जांचना होगा कि क्या यह बाइनरी सर्च ट्री का सही प्रीऑर्डर ट्रैवर्सल सीक्वेंस है। हम मान सकते हैं कि अनुक्रम में प्रत्येक संख्या अद्वितीय है। निम्नलिखित बाइनरी सर्च ट्री पर विचार करें -

सी ++ में बाइनरी सर्च ट्री में प्रीऑर्डर अनुक्रम सत्यापित करें

इसलिए, अगर इनपुट [5,2,1,3,6] जैसा है, तो आउटपुट सही होगा

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

  • आईटीआर:=-1

  • कम :=-इन्फिनिटी

  • इनिशियलाइज़ i :=0 के लिए, जब i <प्रीऑर्डर का आकार, अपडेट (i 1 से बढ़ाएँ), करें -

    • एक्स:=प्रीऑर्डर [i]

    • अगर x <कम है, तो -

      • झूठी वापसी

    • जबकि (itr>=0 और प्री-ऑर्डर[itr]

      • कम :=पूर्व-आदेश[itr]

      • (आईटीआर को 1 से घटाएं)

    • (आईटीआर को 1 से बढ़ाएं)

    • प्रीऑर्डर [itr] :=x

  • सही लौटें

उदाहरण

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool verifyPreorder(vector<int<& preorder) {
      int itr = -1;
      int low = INT_MIN;
      for (int i = 0; i < preorder.size(); i++) {
         int x = preorder[i];
         if (x < low)
            return false;
         while (itr >= 0 && preorder[itr] < x) {
            low = preorder[itr];
            itr--;
         }
         itr++;
         preorder[itr] = x;
      }
      return true;
   }
};
main(){
   Solution ob;
   vector<int< v = {5,2,1,3,6};
   cout << (ob.verifyPreorder(v));
}

इनपुट

{5,2,1,3,6}

आउटपुट

1

  1. C++ में बाइनरी ट्री में नोड का प्रीऑर्डर उत्तराधिकारी

    इस समस्या में, हमें एक बाइनरी ट्री और एक नोड मान दिया जाता है। हमारा काम नोड के प्रीऑर्डर सक्सेसर को प्रिंट करना है। बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें प्रत्येक रूट नोड में अधिकतम 2 चाइल्ड नोड हो सकते हैं। ट्रैवर्सल अग्रिम-आदेश पेड़ के नोड्स को पार करने का एक तरीका है। इसमें हम पहले रूट

  1. C++ में बाइनरी ट्री टू बाइनरी सर्च ट्री रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें पेड़ के प्रत्येक नोड में अधिकतम दो बच्चे नोड हो सकते हैं। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के रूप में जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का वृक्ष है जो निम्नलिखित नियमों का पालन करता है -

  1. सी ++ प्रोग्राम में बाइनरी सर्च?

    द्विआधारी खोज, जिसे अर्ध-अंतराल खोज, लॉगरिदमिक खोज या बाइनरी चॉप के रूप में भी जाना जाता है, एक खोज एल्गोरिथ्म है जो एक क्रमबद्ध सरणी के भीतर लक्ष्य मान की स्थिति का पता लगाता है। बाइनरी खोज लक्ष्य मान की तुलना सरणी के मध्य तत्व से करती है। यदि वे समान नहीं हैं, तो आधा जिसमें लक्ष्य झूठ नहीं बोल सकत