이 튜토리얼에서는 주어진 이진 트리를 논리 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