इस ट्यूटोरियल में, हम सीखेंगे कि बाइनरी ट्री में सबसे गहरे विषम स्तर के नोड को कैसे खोजा जाए।
यह बाइनरी ट्री की गहराई खोजने के समान है। यहां, हमें एक और शर्त जोड़नी है यानी वर्तमान स्तर विषम है या नहीं।
समस्या को हल करने के चरण देखते हैं।
डमी डेटा के साथ बाइनरी ट्री को इनिशियलाइज़ करें।
बाइनरी ट्री में सबसे गहरे विषम स्तर के नोड को खोजने के लिए एक रिकर्सिव फंक्शन लिखें।
यदि वर्तमान नोड लीफ नोड है और स्तर विषम है, तो वर्तमान स्तर लौटाएं।
अन्यथा लेफ्ट नोड और राइट नोड के मैक्स को रिकर्सिव फंक्शन कॉल के साथ लौटाएं।
सबसे गहरे विषम स्तर के नोड को प्रिंट करें।
उदाहरण
कोड देखते हैं।
#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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें कमेंट सेक्शन में बताएं।