Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 이진 트리를 C++에서 논리 AND 속성을 보유하는 트리로 변환

<시간/>

이 튜토리얼에서는 주어진 이진 트리를 논리 AND 속성을 보유하는 트리로 변환하는 프로그램에 대해 논의할 것입니다.

이를 위해 이진 트리가 제공됩니다. 우리의 임무는 노드가 자식 노드의 AND 연산 값을 갖는다는 것을 의미하는 논리적 AND 속성을 보유하는 트리로 변환하는 것입니다. 모든 노드는 0 또는 1의 값을 가질 수 있습니다.

#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