ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อแปลง Binary tree ที่กำหนดให้เป็น tree ที่มีคุณสมบัติ Logical AND
สำหรับสิ่งนี้เราจะได้รับไบนารีทรี งานของเราคือการแปลงเป็นต้นไม้ที่มีคุณสมบัติตรรกะ AND หมายความว่าโหนดมีค่าของการดำเนินการ AND ของโหนดย่อย โปรดทราบว่าทุกโหนดสามารถมีค่าเป็นศูนย์หรือหนึ่งได้
ตัวอย่าง
#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