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

C++ में ऊंचाई h के संतुलित बाइनरी ट्री की गणना करें

हमें एक बाइनरी ट्री की ऊंचाई H के साथ दिया गया है। लक्ष्य दी गई ऊंचाई के संतुलित बाइनरी ट्री की संख्या/गिनती ज्ञात करना है।

एक बाइनरी ट्री - एक ट्री डेटा संरचना है जिसमें प्रत्येक नोड में अधिकतम दो बच्चे होते हैं, जो कि बायां बच्चा और दायां बच्चा होता है।

ऊंचाई-संतुलित बाइनरी ट्री - को एक बाइनरी ट्री के रूप में परिभाषित किया गया है जिसमें प्रत्येक नोड के दो उपप्रकारों की गहराई केवल 1 या 0 से भिन्न होती है। यानी बाएं सबट्री की ऊंचाई और हर नोड पर दाएं सबट्री का अधिकतम अंतर 1 है।

निम्न आकृति में ऊंचाई h=3 के लिए संभावित ऊंचाई संतुलित बाइनरी ट्री हैं।

C++ में ऊंचाई h के संतुलित बाइनरी ट्री की गणना करें

इनपुट

Height H=2

आउटपुट

Count of Balanced Binary Trees of Height H is : 3

स्पष्टीकरण - दी गई आकृति में H=2 की ऊंचाई के लिए संभव संतुलित पेड़ हैं

C++ में ऊंचाई h के संतुलित बाइनरी ट्री की गणना करें

इनपुट

Height H=3

आउटपुट

Count of Balanced Binary Trees of Height H is : 15

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • पूर्णांक H का उपयोग बाइनरी ट्री की ऊंचाई को दर्शाने के लिए किया जाता है।

  • फ़ंक्शन countBTheight(int h) इनपुट के रूप में पेड़ की ऊंचाई लेता है और ऊंचाई h के साथ संभावित संतुलित बाइनरी पेड़ों की संख्या देता है।

  • हम पुनरावर्ती दृष्टिकोण का उपयोग कर रहे हैं।

  • यदि पेड़ की ऊंचाई 1 है, यानी इसमें केवल एक नोड है तो एक नोड वाला केवल एक पेड़ मौजूद है और वह संतुलित है। (अगर(एच==1), वापसी 1)

  • अन्यथा ऊँचाई बाएँ और दाएँ उप-वृक्षों का योग है जिनकी ऊँचाई जड़ से एक या दो कम होती है। (संतुलित पेड़ों की ऊंचाई के बीच का अंतर 1 होता है)।

  • परिणाम के रूप में फ़ंक्शन गिनती लौटाता है।

उदाहरण

#include <iostream>
int countBTheight(int h){
   // One tree is possible with height 0 or 1
   if (h == 0 || h == 1)
      return 1;
   return countBTheight(h-1) * (2 *countBTheight(h-2) + countBTheight(h-1));
}
int main(){
   int H = 4;
   std::cout << "Count of balanced binary trees of height H is: "<<countBTheight(H);
}

आउटपुट

Count of balanced binary trees of height H is: 315

  1. C++ . में अद्वितीय बाइनरी सर्च ट्री

    मान लीजिए कि हमारे पास एक पूर्णांक n है, हमें सभी संरचनात्मक रूप से अद्वितीय बाइनरी सर्च ट्री को गिनना होगा जो 1 से n तक के मानों को संग्रहीत करते हैं। तो अगर इनपुट 3 है, तो आउटपुट 5 होगा, जैसे पेड़ होंगे - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - n + 1 आकार की एक सरणी बनाएं dp[0] :=1 i क

  1. C++ . में अद्वितीय बाइनरी सर्च ट्री II

    मान लीजिए कि हमारे पास एक पूर्णांक n है, हमें सभी संरचनात्मक रूप से अद्वितीय बाइनरी सर्च ट्री उत्पन्न करने होंगे जो 1 से n तक के मानों को संग्रहीत करते हैं। तो अगर इनपुट 3 है, तो पेड़ होंगे - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - जेनरेट () नामक एक पुनरावर्ती फ़ंक्शन को परिभाषित करें,

  1. C++ में दो बाइनरी ट्री मर्ज करें

    मान लीजिए कि हमारे पास दो बाइनरी पेड़ हैं और विचार करें कि जब हम उनमें से एक को दूसरे को कवर करने के लिए रखते हैं, तो दो पेड़ों के कुछ नोड्स ओवरलैप हो जाते हैं जबकि अन्य ओवरलैपिंग होते हैं। हमें उन्हें एक नए बाइनरी ट्री में मिलाना होगा। मर्ज नियम इस तरह है कि यदि दो नोड्स ओवरलैपिंग कर रहे हैं, तो नो