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

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


একটি বাইনারি ট্রি দেওয়া আছে, ফাংশনটি নোডগুলোর কিগুলোর বাইনারি ভ্যালু জেনারেট করবে এবং তারপর সেই বাইনারি সমতুল্যে সেট বিট (১) এর সংখ্যা রিটার্ন করবে।

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

উদাহরণ

বাইনারি ট্রিতে কি হিসেবে: 10 3 211 140 162 100 এবং 146

Key বাইনারি সমতুল্য সেট বিট (আউটপুট)
10 1010 2
3 0011 2
211 11010011 5
140 10001100 3
162 10100010 3
100 1100100 3
146 10010010 3

এখানে আমরা __builtin_popcount ফাংশন ব্যবহার করছি

ফাংশন প্রোটোটাইপ হলো নিচের মতো −

int __builtin_popcount(unsigned int)

এটি একটি ইন্টিজারে সেট বিটের সংখ্যা রিটার্ন করে অর্থাৎ ইন্টিজারের বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা।

অ্যালগরিদম

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 generating bits of a node data
   void bits(Node* root)
   IF root = NULL
      return
   print __builtin_popcount(root->data)
   bits(root->left)
   bits(root->right)
step 4 → In main()
   create tree using Node* root = newnode(10)
   root->left = newnode(3)
   call bits(root)
STOP

উদাহরণ

#include <bits/stdc++.h> using namespace std; // structure of a node struct Node {    int data;    struct Node *left, *right; }; //function to create a new node Node* newnode(int data) {    Node* node = new Node;    node->data = data;    node->left = node->right = NULL;    return (node); } //function for finding out the node void bits(Node* root){    if (root == NULL)    return;    //__builtin_popcount counts the number of set bit of a current node    cout << "bits in node " << root->data << " = " <<__builtin_popcount(root->data)<< "\n";    bits(root->left);    bits(root->right); } int main(){    Node* root = newnode(10);    root->left = newnode(3);    root->left->left = newnode(140);    root->left->right = newnode(162);    root->right = newnode(211);    root->right->left = newnode(100);    root->right->right = newnode(146);    bits(root);    return 0; }

আউটপুট

যদি আমরা উপরের প্রোগ্রামটি রান করি তবে এটি নিচের আউটপুট জেনারেট করবে

bits in node 10 = 2 bits in node 3 = 2 bits in node 140 = 3 bits in node 162 = 3 bits in node 211 = 5 bits in node 100 = 3 bits in node 146 = 3

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

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

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

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