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

n आकार के दिए गए सरणी की जाँच करें n स्तरों के BST का प्रतिनिधित्व कर सकते हैं या C++ में नहीं

हमारे पास एक सरणी ए है, हमें यह जांचना होगा कि सरणी एन स्तरों के साथ बीएसटी का प्रतिनिधित्व कर सकती है या नहीं। जैसा कि स्तर है, हम निम्नलिखित तरीके से एक पेड़ का निर्माण कर सकते हैं। मान लें कि कोई संख्या k है, k से बड़ा मान दाईं ओर जाता है, और k से कम बाईं ओर चलता है। मान लीजिए कि दो सूचियाँ हैं:{50, 20, 9, 25, 10}, और {50, 30, 20, 25, 10}

n आकार के दिए गए सरणी की जाँच करें n स्तरों के BST का प्रतिनिधित्व कर सकते हैं या C++ में नहीं

पहला मान्य नहीं है, लेकिन दूसरा मान्य है।

इसे जांचने के लिए हम या तो बीएसटी बना सकते हैं और ऊंचाई की जांच कर सकते हैं, अन्यथा सरणी आधारित दृष्टिकोण का उपयोग करें। सरणी आधारित दृष्टिकोण नीचे जैसा है -

  • बाएं सबट्री की अधिकतम सीमा को चिह्नित करने के लिए दो चर अधिकतम =अनंत, और दाएं उपट्री के लिए न्यूनतम सीमा को चिह्नित करने के लिए न्यूनतम =नकारात्मक अनंत लें
  • गिरफ्तारी [i] से गिरफ्तार [n - 1] तक के प्रत्येक तत्व के लिए, निम्न चरणों को दोहराएं
    • अगर गिरफ्तारी [i]> गिरफ्तारी [i - 1] और गिरफ्तारी [i]> मिनट और गिरफ्तारी [i] <अधिकतम, फिर न्यूनतम अपडेट करें:=गिरफ्तारी [i - 1]
    • अन्यथा अगर गिरफ्तारी [i]> मिनट और गिरफ्तारी [i] <अधिकतम, तो अधिकतम अपडेट करें:=गिरफ्तारी [i]
    • यदि इनमें से कोई भी मान्य नहीं है, तो तत्व को एक नए स्तर में सम्मिलित किया जाएगा, इसलिए तोड़ें

उदाहरण

#include <iostream>
using namespace std;
bool canMakeBSTifHeightN(int arr[], int n) {
   int min = INT_MIN;
   int max = INT_MAX;
   for(int i = 1; i < n; i++){
      if (arr[i] > arr[i - 1] && arr[i] > min && arr[i] < max) {
         min = arr[i - 1];
      } else if (arr[i] < arr[i - 1] && arr[i] > min && arr[i] <
      max) {
         max = arr[i - 1];
      } else {
         return true;
      }
   }
   return false;
}
int main() {
   int elements[] = {50, 30, 20, 25, 10};
   int n = sizeof(elements)/sizeof(elements[0]);
   if (canMakeBSTifHeightN(elements, n))
      cout << "We can make BST of height " << n;
   else
      cout << "We can not make BST of height " << n;
}

आउटपुट

We can make BST of height 5

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

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

  1. जाँच करें कि दिया गया ट्री ग्राफ C++ में रैखिक है या नहीं

    यहां हम देखेंगे कि कैसे जांचा जाता है कि एक ट्री ग्राफ रैखिक है या नहीं। एक रैखिक वृक्ष ग्राफ को एक पंक्ति में व्यक्त किया जा सकता है, मान लीजिए कि यह एक रैखिक वृक्ष ग्राफ का एक उदाहरण है। लेकिन यह रैखिक नहीं है - यह जांचने के लिए कि ग्राफ रैखिक है या नहीं, हम दो शर्तों का पालन कर सकते हैं यद

  1. n आकार के दिए गए सरणी की जाँच करें n स्तरों के BST का प्रतिनिधित्व कर सकते हैं या C++ में नहीं

    हमारे पास एक सरणी ए है, हमें यह जांचना होगा कि सरणी एन स्तरों के साथ बीएसटी का प्रतिनिधित्व कर सकती है या नहीं। जैसा कि स्तर है, हम निम्नलिखित तरीके से एक पेड़ का निर्माण कर सकते हैं। मान लें कि कोई संख्या k है, k से बड़ा मान दाईं ओर जाता है, और k से कम बाईं ओर चलता है। मान लीजिए कि दो सूचियाँ हैं:{