Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để chuyển đổi một cây Binary đã cho thành một cây chứa thuộc tính Logical AND.
Đối với điều này, chúng tôi sẽ được cung cấp một cây nhị phân. Nhiệm vụ của chúng ta là chuyển nó thành một cây có thuộc tính logic AND nghĩa là một nút có giá trị của toán hạng AND đối với các nút con của nó. Lưu ý rằng mọi nút đều có thể có giá trị bằng không hoặc bằng một.
Ví dụ
#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; }
Đầu ra
Before conversion : 0 1 1 0 1 0 1 After conversion : 0 0 1 0 1 1 1