在 C++ 上将给定的二叉树转换为具有逻辑与属性的树
c++server side programmingprogramming
在本教程中,我们将讨论一个将给定的二叉树转换为具有逻辑与属性的树的程序。
为此,我们将提供一棵二叉树。我们的任务是将其转换为具有逻辑与属性的树,这意味着节点具有其子节点的与运算的值。请注意,每个节点的值都可以是零或一。
示例
#include<bits/stdc++.h> using namespace std; //二叉树的节点结构 struct Node{ int data; struct Node* left; struct Node* right; }; //创建新节点 struct Node* newNode(int key){ struct Node* node = new Node; node->data= key; node->left = node->right = NULL; return node; } //转换树,节点如下 //逻辑与运算 void transform_tree(Node *root){ if (root == NULL) return; //移动到第一个左节点 transform_tree(root->left); //移动到第一个右节点 transform_tree(root->right); if (root->left != NULL && root->right != NULL) root->data = (root->left->data) & (root->right->data); } //打印中序遍历 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("转换前:\n"); print_tree(root); transform_tree(root); printf("\n转换后:\n"); print_tree(root); return 0; }
输出
转换前 : 0 1 1 0 1 0 1 转换后 : 0 0 1 0 1 1 1