दिए गए बाइनरी ट्री में, प्रोग्राम को ट्री के विषम लेवल पर नोड्स प्रिंट करने होंगे और बाइनरी ट्री के लेवल 1 से n तक शुरू होते हैं।
चूंकि कुछ उल्लेख नहीं है, दो दृष्टिकोणों में से एक को लागू किया जा सकता है यानी रिकर्सन या इटरेशन।
चूंकि हम एक रिकर्सिव दृष्टिकोण का उपयोग कर रहे हैं, प्रोग्राम एक फ़ंक्शन को रिकर्सिव कॉल करेगा जो विषम लेवल पर नोड्स लाएगा और उन्हें वापस करेगा।

उपरोक्त बाइनरी ट्री में -
Nodes at level 1: 10 Nodes at level 2: 3 and 211 Nodes at level 3: 140, 162, 100 and 146
तो, लेवल 1 और लेवल 3 पर नोड्स प्रिंट होंगे यानी आउटपुट 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