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

एक विशेष बाइनरी ट्री की ऊँचाई ज्ञात कीजिए जिसके लीफ नोड्स C++ में जुड़े हुए हैं

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

इस मामले में ऊंचाई खोजने की रणनीति सामान्य बाइनरी सर्च ट्री के समान है। हम एक नोड के बाएँ और दाएँ उपप्रकारों की ऊँचाई की पुनरावर्ती गणना करते हैं और नोड को ऊँचाई प्रदान करते हैं जो दो बच्चों की अधिकतम है + 1। लेकिन यहाँ पत्तियाँ गोलाकार दोगुनी लिंक्ड सूची के तत्व हैं। इसलिए एक नोड लीफ नोड होने के लिए हम जांचते हैं कि क्या बाएं का दायां नोड नोड की ओर इशारा कर रहा है और इसका दायां बायां नोड ही नोड की ओर इशारा कर रहा है।

उदाहरण

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
      Node *left, *right;
};
bool isLeafNode(Node* node) {
   return node->left && node->left->right == node && node->right && node->right->left == node;
}
int findHeight(Node* node) {
   if (node == NULL)
      return 0;
   if (isLeafNode(node))
      return 1;
   return 1 + max(findHeight(node->left), findHeight(node->right));
}
Node* getNode(int data) {
   Node* node = new Node;
   node->data = data;
   node->left = NULL;
   node->right = NULL;
   return node;
}
int main() {
   Node* root = getNode(1);
   root->left = getNode(2);
   root->right = getNode(3);
   root->left->left = getNode(4);
   root->left->right = getNode(5);
   root->left->left->left = getNode(6);
   Node *L1 = root->left->left->left;
   Node *L2 = root->left->right;
   Node *L3 = root->right;
   L1->right = L2, L2->right = L3, L3->right = L1;
   L3->left = L2, L2->left = L1, L1->left = L3;
   cout << "Height of tree is: " << findHeight(root);
}

आउटपुट

Height of tree is: 4

  1. C++ में बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करें

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

  1. सी ++ में बाइनरी ट्री में निकटतम पत्ता खोजें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें विभिन्न स्तरों पर पत्ती की गांठें होती हैं। एक और पॉइंटर दिया गया है, जो एक नोड की ओर इशारा कर रहा है। हमें नुकीले नोड से निकटतम लीफ नोड की दूरी ज्ञात करनी होगी। विचार करें कि पेड़ नीचे जैसा है - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 की ओर इ

  1. बाइनरी ट्री के नोड्स को प्रिंट करें क्योंकि वे C++ प्रोग्रामिंग में लीफ नोड बन जाते हैं।

    एक बाइनरी ट्री को देखते हुए, हमें इसके लीफ नोड्स को प्रिंट करना होगा और फिर हमें उन लीफ नोड्स को हटाना होगा और तब तक दोहराना होगा जब तक कि ट्री में कोई नोड न बचे। उदाहरण तो समस्या का परिणाम होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक तरीका अपनाया है जहां हम डीएफएस लागू कर रहे है