কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রামিং-এ ট্রির বিষম লেভেলের নোডগুলো প্রিন্ট করা


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

যেহেতু কিছু নির্দিষ্ট নেই, তাই দুটি অ্যাপ্রোচে যেকোনো একটি ইমপ্লিমেন্ট করা যায়: রিকার্শন বা ইটারেশন।

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

C++ প্রোগ্রামিং-এ ট্রির বিষম লেভেলের নোডগুলো প্রিন্ট করা

উপরের বাইনারি ট্রিতে −

লেভেল ১-এর নোড: 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

  1. C++ প্রোগ্রামিং-এ বাইনারি ট্রিতে যেকোনো দুটি নোডের পথ প্রিন্ট করা

  2. C++ প্রোগ্রামিং-এ বাইনারি ট্রিতে প্রথম ছোটো রুট-টু-লিফ পথ প্রিন্ট করা

  3. C++ প্রোগ্রামিং-এ বাইনারি ট্রির সব নোডের লেভেল প্রিন্ট করা

  4. C++ প্রোগ্রামিং-এ বাইনারি ট্রির প্রতিটি নোডের সেট বিটের সংখ্যা প্রিন্ট করা