इस समस्या में, हमें एक बाइनरी सर्च ट्री दिया जाता है। हमारा काम बाइनरी सर्च ट्री के सभी सम-मूल्यवान नोड्स को प्रिंट करना है।
बाइनरी सर्च ट्री एक बाइनरी ट्री है जो निम्नलिखित शर्तों का पालन करता है -
-
बाएं उप-पेड़ में हमेशा मूल नोड की तुलना में छोटे मान वाले नोड होते हैं।
-
ठीक है, उप-वृक्ष में हमेशा मूल नोड से अधिक मान वाले नोड होते हैं।
-
सभी नोड्स को उपरोक्त 2 नियमों का पालन करना होगा।
बाइनरी सर्च ट्री का उदाहरण -
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
आउटपुट - 2 4 6 8
इस समस्या को हल करने के लिए, हमें बाइनरी सर्च ट्री के सभी नोड्स को पार करना होगा और वर्तमान नोड के मूल्य की जांच करनी होगी। अगर यह भी है तो नोड को प्रिंट करें अन्यथा इसे छोड़ दें।
उदाहरण
नीचे दिया गया कोड हमारे तर्क की कार्यप्रणाली को स्पष्ट करेगा -
#include <iostream> using namespace std; struct Node { int key; struct Node *left, *right; }; Node* newNode(int item){ Node* temp = new Node; temp->key = item; temp->left = temp->right = NULL; return temp; } Node* insertNode(Node* node, int key){ if (node == NULL) return newNode(key); if (key < node->key) node->left = insertNode(node->left, key); else node->right = insertNode(node->right, key); return node; } void printEvenNode(Node* root){ if (root != NULL) { printEvenNode(root->left); if (root->key % 2 == 0) cout<<root->key<<"\t"; printEvenNode(root->right); } } int main(){ Node* root = NULL; root = insertNode(root, 54); root = insertNode(root, 43); root = insertNode(root, 12); root = insertNode(root, 30); root = insertNode(root, 89); root = insertNode(root, 67); root = insertNode(root, 80); cout<<"All even nodes of the tree are :\n"; printEvenNode(root); return 0; }
आउटपुट
पेड़ के सभी सम नोड्स हैं -
12 30 54 80