একটি বাইনারি ট্রি দেওয়া আছে, প্রোগ্রামটি ট্রির বিষম লেভেলের নোডগুলো প্রিন্ট করতে হবে এবং বাইনারি ট্রির লেভেলগুলো ১ থেকে n পর্যন্ত শুরু হয়।
যেহেতু কিছু নির্দিষ্ট নেই, তাই দুটি অ্যাপ্রোচে যেকোনো একটি ইমপ্লিমেন্ট করা যায়: রিকার্শন বা ইটারেশন।
যেহেতু আমরা রিকার্সিভ অ্যাপ্রোচ ব্যবহার করছি, প্রোগ্রামটি একটি ফাংশনে রিকার্সিভ কল করবে যা বিষম লেভেলের নোডগুলো বের করবে এবং রিটার্ন করবে।

উপরের বাইনারি ট্রিতে −
লেভেল ১-এর নোড: 10 লেভেল ২-এর নোড: 3 এবং 211 লেভেল ৩-এর নোড: 140, 162, 100 এবং 146
সুতরাং, লেভেল ১ এবং লেভেল ৩-এর নোডগুলো প্রিন্ট হবে অর্থাৎ আউটপুট হবে 10, 140, 162, 100 এবং 146।
অ্যালগরিদম
START Step 1 → create a structure of a node as struct Node struct node *left, *right int data End Step 2 → function to create a node node* newnode(int data) node->data = data node->left = node->right = NULL; return (node) step 3 → create function for finding the odd nodes void odd(Node *root, bool ifodd = true) IF root = NULL Return End if (ifodd) print root->data End odd(root->left, !ifodd) odd(root->right, !ifodd) step 4 → In main() Create tree using Node* root = newnode(45) root->left = newnode(23) Call odd(root) Stop
উদাহরণ
#include <bits/stdc++.h> using namespace std; struct Node{ int data; Node* left, *right; }; void odd(Node *root, bool ifodd = true){ if (root == NULL) return; if (ifodd) cout << root->data << " " ; odd(root->left, !ifodd); odd(root->right, !ifodd); } // function to create a new node Node* newnode(int data){ Node* node = new Node; node->data = data; node->left = node->right = NULL; return (node); } int main(){ Node* root = newnode(45); root->left = newnode(23); root->right = newnode(13); root->left->left = newnode(24); root->left->right = newnode(85); cout<<"\nodd nodes are "; odd(root); return 0; }
আউটপুট
যদি আমরা উপরের প্রোগ্রামটি রান করি তবে এটি নিচের আউটপুট জেনারেট করবে
odd nodes are 45 24 85