এই টিউটোরিয়ালে, আমরা একটি প্রদত্ত বাইনারি ট্রিকে লজিক্যাল এবং প্রপার্টি ধারণ করে এমন একটি ট্রিতে রূপান্তর করার একটি প্রোগ্রাম নিয়ে আলোচনা করব৷
এর জন্য আমাদের একটি বাইনারি গাছ দেওয়া হবে। আমাদের কাজ হল এটিকে একটি ট্রিতে রূপান্তর করা যা লজিক্যাল এবং সম্পত্তি ধারণ করে মানে একটি নোডের বাচ্চা নোডগুলির AND অপারেশনের একটি মান রয়েছে। মনে রাখবেন যে প্রতিটি নোডের একটি মান শূন্য বা এক হতে পারে।
উদাহরণ
#include<bits/stdc++.h>
using namespace std;
//node structure of binary tree
struct Node{
int data;
struct Node* left;
struct Node* right;
};
//creation of a new node
struct Node* newNode(int key){
struct Node* node = new Node;
node->data= key;
node->left = node->right = NULL;
return node;
}
//converting the tree with nodes following
//logical AND operation
void transform_tree(Node *root){
if (root == NULL)
return;
//moving to first left node
transform_tree(root->left);
//moving to first right node
transform_tree(root->right);
if (root->left != NULL && root->right != NULL)
root->data = (root->left->data) &
(root->right->data);
}
//printing the inorder traversal
void print_tree(Node* root){
if (root == NULL)
return;
print_tree(root->left);
printf("%d ", root->data);
print_tree(root->right);
}
int main(){
Node *root=newNode(0);
root->left=newNode(1);
root->right=newNode(0);
root->left->left=newNode(0);
root->left->right=newNode(1);
root->right->left=newNode(1);
root->right->right=newNode(1);
printf("Before conversion :\n");
print_tree(root);
transform_tree(root);
printf("\nAfter conversion :\n");
print_tree(root);
return 0;
} আউটপুট
Before conversion : 0 1 1 0 1 0 1 After conversion : 0 0 1 0 1 1 1