इस ट्यूटोरियल में, हम सीखेंगे कि बाइनरी ट्री में सबसे गहरे विषम स्तर के नोड को कैसे खोजा जाए।
यह बाइनरी ट्री की गहराई खोजने के समान है। यहां, हमें एक और शर्त रखनी है यानी कि मौजूदा स्तर विषम है या नहीं।
आइए समस्या को हल करने के लिए चरणों को देखें।
-
डमी डेटा के साथ बाइनरी ट्री को इनिशियलाइज़ करें।
-
बाइनरी ट्री में सबसे गहरे विषम स्तर के नोड को खोजने के लिए एक पुनरावर्ती फ़ंक्शन लिखें।
-
यदि वर्तमान नोड लीफ नोड है और स्तर विषम है, तो वर्तमान स्तर लौटाएं।
-
अन्यथा रिकर्सिव फ़ंक्शन कॉल के साथ अधिकतम बाएं नोड और दाएं नोड लौटाएं।
-
-
सबसे गहरे विषम स्तर के नोड को प्रिंट करें।
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node *left, *right; }; struct Node* newNode(int data) { struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->data = data; node->left = node->right = NULL; return node; } int oddLeafDepthInTree(struct Node *root, int level) { if (root == NULL) { return 0; } if (root->left == NULL && root->right == NULL && level % 2 == 1) { return level; } return max(oddLeafDepthInTree(root->left, level + 1), oddLeafDepthInTree(root->right, level + 1)); } int main() { struct Node* root = newNode(1); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(4); root->right->left = newNode(5); root->right->right = newNode(6); root->right->left->right = newNode(7); root->right->right->right = newNode(8); int level = 1, depth = 0; cout << oddLeafDepthInTree(root, level) << endl; return 0; }
आउटपुट
यदि आप उपरोक्त कोड को निष्पादित करते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
3
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।