इस ट्यूटोरियल में, हम एक प्रोग्राम पर चर्चा करेंगे जो दिए गए बाइनरी ट्री को लॉजिकल 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