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

C++-এ বাইনারি ট্রি কে লজিক্যাল AND প্রোপার্টি ধারণকারী ট্রিতে রূপান্তর


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম নিয়ে আলোচনা করব যা একটি বাইনারি ট্রিকে লজিক্যাল AND প্রোপার্টি ধারণকারী ট্রিতে রূপান্তর করে।

এখানে আমাদের একটি বাইনারি ট্রি দেওয়া থাকবে। আমাদের কাজ হলো সেটিকে এমন একটি ট্রিতে রূপান্তর করা যেটি লজিক্যাল AND প্রোপার্টি ধারণ করে অর্থাৎ একটি নোডের মান এর চাইল্ড নোডগুলোর AND অপারেশনের ফলাফল। মনে রাখবেন প্রতিটি নোডের মান শুধু শূন্য বা এক হতে পারে।

উদাহরণ

#include<bits/stdc++.h> using namespace std; //বাইনারি ট্রির নোড স্ট্রাকচার struct Node{    int data;    struct Node* left;    struct Node* right; }; //নতুন নোড তৈরি struct Node* newNode(int key){    struct Node* node = new Node;    node->data= key;    node->left = node->right = NULL;    return node; } //নোডগুলো লজিক্যাল AND অপারেশন মেনে //ট্রি রূপান্তর করা void transform_tree(Node *root){    if (root == NULL)       return;    //প্রথমে বাম নোডে যাওয়া    transform_tree(root->left);    //তারপর ডান নোডে যাওয়া    transform_tree(root->right);    if (root->left != NULL && root->right != NULL)       root->data = (root->left->data) &    (root->right->data); } //ইনঅর্ডার ট্রাভার্সাল প্রিন্ট করা 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

  1. C++-এ বাইনারি ট্রির ক্লোনের মধ্যে টার্গেট নোড খুঁজে বের করা

  2. C++-এ বাইনারি ট্রিতে প্রিঅর্ডার প্রিডিসেসর (Preorder Predecessor of a Node)

  3. C++-এ বাইনারি ট্রিতে প্রিঅর্ডার সাকসেসর (Preorder Successor of a Node)

  4. বাইনারি ট্রিতে রুট থেকে নির্দিষ্ট নোডের দূরত্ব বের করা C++-তে