बाइनरी ट्री को देखते हुए, फ़ंक्शन नोड्स में संग्रहीत कुंजियों के बाइनरी मान उत्पन्न करेगा और फिर उस बाइनरी समकक्ष में सेट बिट्स(1) की संख्या लौटाएगा।
उदाहरण
बाइनरी ट्री जिसमें चाबियां होती हैं:10 3 211 140 162 100 और 146
कुंजी | बाइनरी समकक्ष | <वें शैली ="पाठ-संरेखण:केंद्र;"> बिट्स (आउटपुट) सेट करें|
---|---|---|
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