इस समस्या में हमें एक Binary Tree दिया जाता है। हमारा काम बाइनरी ट्री में सभी सही नोड्स के बीच अधिकतम खोजना है।
समस्या का विवरण: यहां, हमें बाइनरी ट्री के सभी राइट चाइल्ड नोड्स के बीच अधिकतम मान खोजने की आवश्यकता है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट:
<मजबूत>
आउटपुट: 9
स्पष्टीकरण:
सभी दाएं नोड हैं:{2, 8, 9}। उनमें से अधिकतम 9 है।
समाधान दृष्टिकोण
समस्या को हल करने के लिए, हमें पेड़ को पार करना होगा और जांचना होगा कि उसका सही बच्चा मौजूद है या नहीं। यदि यह मौजूद है, तो maxRight तत्व से तुलना करें और यदि यह बड़ा है तो बदलें।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <iostream> using namespace std; struct Node { int data; struct Node *left, *right; }; Node* newNode(int data) { Node* temp = new Node; temp->data = data; temp->left = temp->right = NULL; return temp; } int findMaxRightNode(Node* root) { int maxRight = -100; if (root == NULL) return -1; if (root->right != NULL) maxRight = root->right->data; return max( findMaxRightNode(root->right), max(maxRight, findMaxRightNode(root->left) ) ); } int main() { Node* root = newNode(5); root->left = newNode(3); root->right = newNode(2); root->left->left = newNode(1); root->left->right = newNode(8); root->right->left = newNode(6); root->right->right = newNode(9); cout<<"The maximum among all right nodes in Binary Tree is "<< findMaxRightNode(root); return 0; }
आउटपुट
The maximum among all right nodes in Binary Tree is 9