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

C++ में BST के प्रीऑर्डर ट्रैवर्सल का उपयोग करके रूट से छोटे तत्वों की संख्या

आपको अग्रिम-आदेश ट्रैवर्सल का परिणाम दिया गया है। आपको उन तत्वों की संख्या ज्ञात करनी होगी जो रूट से छोटे हों।

प्रीऑर्डर ट्रैवर्सल में पहला तत्व बीएसटी की जड़ है। आइए एक उदाहरण देखें।

इनपुट

preorder_result = [5, 4, 2, 1, 7, 6, 8, 9]

आउटपुट

3

ऐसे तीन तत्व हैं जो जड़ से छोटे हैं। जड़ 5 है।

एल्गोरिदम

  • एक सरणी में अग्रिम-आदेश परिणाम प्रारंभ करें।

  • पहले एलिमेंट यानी बीएसटी के रूट को एक वेरिएबल में स्टोर करें।

  • एक लूप लिखें जो प्रीऑर्डर परिणाम के दूसरे तत्व से पुनरावृत्त हो।

    • प्रत्येक तत्व की जड़ से तुलना करें।

    • यदि वर्तमान तत्व मूल से बड़ा है, तो गिनती बढ़ाएँ।

  • गिनती वापस करें।

कार्यान्वयन

C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है

#include <bits/stdc++.h>
using namespace std;
int getElementsCount(int arr[], int n) {
   if (n < 0) {
      return 0;
   }
   int i, root = arr[0], count = 0;
   for(i = 1; i < n; i++) {
      if(arr[i] < root) {
         count += 1;
      }
   }
   return count;
}
int main() {
   int preorder[] = {5, 4, 2, 1, 7, 6, 8, 9};
   int n = 8;
   cout << getElementsCount(preorder, n) << endl;
   return 0;
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

3

  1. सी ++ में लगातार तत्वों के एक्सओआर का उपयोग करके सरणी के तत्व खोजें

    विचार करें कि हमें n तत्वों की एक सूची ढूंढनी है। लेकिन हमारे पास वास्तविक सरणी के लगातार दो तत्वों का XOR मान है। साथ ही वास्तविक का पहला तत्व दिया गया है। इसलिए यदि सरणी तत्व a, b, c, d, e, f हैं, तो दिया गया सरणी a^b, b^c, c^d, d^e और e^f होगा। जैसा कि पहला नंबर दिया गया है, जिसका नाम a है, जो ह

  1. सी ++ का उपयोग करके सरणी के सभी तत्वों को हटाने के लिए आवश्यक संचालन की न्यूनतम संख्या।

    समस्या कथन एक पूर्णांक सरणी गिरफ्तारी को देखते हुए, कार्य सरणी के सभी तत्वों को हटाने के लिए आवश्यक न्यूनतम संख्या में संचालन को प्रिंट करना है। तत्व को हटाते समय निम्नलिखित प्रतिबंध लगाया जाता है - सरणी से किसी भी तत्व को यादृच्छिक रूप से चुना जा सकता है और इसके द्वारा विभाज्य प्रत्येक तत्व को

  1. C++ का उपयोग करके किसी सरणी में किसी संख्या की आवृत्ति ज्ञात करें।

    मान लीजिए कि हमारे पास एक सरणी है। एन विभिन्न तत्व हैं। हमें सरणी में एक तत्व की आवृत्ति की जांच करनी है। मान लीजिए A =[5, 12, 26, 5, 3, 4, 15, 5, 8, 4], अगर हम 5 की बारंबारता ज्ञात करने की कोशिश करते हैं, तो यह 3 होगा। इसे हल करने के लिए, हम सरणी को बाईं ओर से स्कैन करेंगे, यदि तत्व दिए गए नंबर के