Computer >> Máy Tính >  >> Lập trình >> C ++

Chuyển đổi cây nhị phân đã cho thành cây chứa thuộc tính logic AND trên C ++

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