এই সমস্যায়, আমাদের একটি বাইনারি সার্চ ট্রি দেওয়া হয়েছে। আমাদের কাজ হল বাইনারি সার্চ ট্রির সমস্ত এমনকি মূল্যবান নোড প্রিন্ট করা।
বাইনারী অনুসন্ধান গাছ একটি বাইনারি গাছ যা নিম্নলিখিত শর্ত অনুসরণ করে -
-
বাম সাব-ট্রিতে সবসময় প্যারেন্ট নোডের চেয়ে ছোট মানের নোড থাকে।
-
ঠিক আছে, সাব-ট্রিতে সবসময় প্যারেন্ট নোডের চেয়ে বেশি মানের নোড থাকে।
-
সমস্ত নোডকে উপরের 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