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++ में बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करना C++ में बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करना

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

  1. C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें

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

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

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