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

C++ में एक पेड़ की अधिकतम गहराई या ऊँचाई ज्ञात करने के लिए एक प्रोग्राम लिखें

इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम किसी दिए गए पेड़ की अधिकतम गहराई या ऊंचाई का पता लगाने के लिए एक प्रोग्राम लिखना है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

C++ में एक पेड़ की अधिकतम गहराई या ऊँचाई ज्ञात करने के लिए एक प्रोग्राम लिखें


पेड़ की ऊंचाई 3 होती है।

एक पेड़ की अधिकतम ऊँचाई ज्ञात करने के लिए, हम उसके बाएँ और दाएँ उपप्रकार की ऊँचाई की जाँच करेंगे और दोनों के अधिकतम में एक जोड़ देंगे। यह एक पुनरावर्ती प्रक्रिया है जो इसे जारी रखेगी पेड़ का अंतिम नोड पाया जाता है और उप-पेड़ों की ऊंचाई खोजने के लिए उत्तरोत्तर जोड़ा जाता है।

उपरोक्त उदाहरण इस विधि का उपयोग करके हल किया गया।

पेड़ की ऊँचाई ज्ञात करना अर्थात ऊँचाई(3) =अधिकतम(ऊँचाई(5),ऊँचाई(7)) + 1.

इसके लिए, हम 5 और 7 मान वाले नोड्स की ऊंचाई की गणना करेंगे।

ऊंचाई(5) =अधिकतम(ऊंचाई(1),ऊंचाई(9)) + 1 और

ऊंचाई (7) =1, इसका कोई उप-वृक्ष नहीं है जिसे बनाया जा सकता है।

इसी तरह, ऊंचाई(1) =ऊंचाई(9) =1

ऊंचाई(5) =अधिकतम(1,1) +1 =2

ऊंचाई(3) =अधिकतम(ऊंचाई(5),ऊंचाई(7)) + 1 =अधिकतम(2,1) + 1 =3.

तो ऊंचाई 3 हो जाती है।

समाधान का वर्णन करने के लिए कार्यक्रम,

उदाहरण

#include <iostream>
using namespace std;
class node {
   public:
   int data;
   node* left;
   node* right;
};
int height(node* node) {
   if (node == NULL)
     return 0;
   else {
      int lDepth = height(node->left);
      int rDepth = height(node->right);
      if (lDepth > rDepth)
         return(lDepth + 1);
      else return(rDepth + 1);
   }
}
node* insertNode(int data) {
   node* Node = new node();
   Node->data = data;
   Node->left = NULL;
   Node->right = NULL;
   return(Node);
}
int main() {
   node *root = insertNode(4);
   root->left = insertNode(5);
   root->right = insertNode(0);
   root->left->left = insertNode(1);
   root->left->right = insertNode(9);
   cout<<"The height of the given binary tree is "<<height(root);
   return 0;
}

आउटपुट

The height of the given binary tree is 3

  1. C++ में एक लाइन के मध्य-बिंदु को खोजने का प्रोग्राम

    इस समस्या में, हमें दो बिंदु A और B दिए गए हैं, जो एक रेखा के आरंभ और अंत बिंदु हैं। हमारा काम C++ में एक लाइन के मध्य-बिंदु को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - यहाँ, हमारे पास एक रेखा है जिसमें शुरुआती और अंत बिंदु A(x1, y1) और B(x2, y2) हैं। और हमें रेखा के मध्य-बिंदु को खोजन

  1. C++ में त्रिभुज के केंद्रक को खोजने का कार्यक्रम

    इस समस्या में, हमें एक 2D सरणी दी गई है जो त्रिभुज के तीन शीर्षों के निर्देशांकों को दर्शाती है। हमारा काम C++ में त्रिभुज के Centroid को खोजने के लिए एक प्रोग्राम बनाना है। सेंट्रोइड त्रिभुज का वह बिंदु है जिस पर त्रिभुज की तीन माध्यिकाएं प्रतिच्छेद करती हैं। माध्यिका त्रिभुज की वह रेखा है जो त्र

  1. C++ में समांतर चतुर्भुज का क्षेत्रफल ज्ञात करने का कार्यक्रम

    इस समस्या में, हमें दो मान दिए गए हैं जो समांतर चतुर्भुज के आधार और ऊंचाई को दर्शाते हैं। हमारा कार्य C++ में समांतर चतुर्भुज का क्षेत्रफल ज्ञात करने के लिए एक प्रोग्राम बनाना है। समांतर चतुर्भुज एक चार भुजा बंद आकृति है जिसकी विपरीत भुजाएँ एक दूसरे के समान और समानांतर हैं। समस्या को समझने के लि