#include
using namespace std;
class tnode{
public:
int data;
tnodeleft;
tnoderight;
tnode(int val){
data=val;
left=right=NULL;
}
};
tnodebuildtree(int arr[],int s,int e){
if(s>e){
return NULL;
}
tnoderoot=new tnode(arr[s]);
int i;
for(i=s;i<=e;i++){
if(arr[i]>root->data){
break;
}
}
root->left=buildtree(arr,s+1,i-1);
root->right=buildtree(arr,i,e);
return root;
}
tnodeFindmin(tnoderoot){
while(root->left!=NULL){
root=root->left;
}
return root;
}
tnode* Delete(tnoderoot,int data){
if(root==NULL){return NULL;}
else if(datadata){root->left=Delete(root->left,data);}
else if(data>root->data){root->right=Delete(root->right,data);}
else{
if(root->left==NULL && root->right==NULL){
delete root;
root==NULL;
}
else if(root->left==NULL){
tnodetemp=root;
root=root->right;
delete temp;
}
else if(root->right==NULL){
tnodetemp=root;
root=root->left;
delete temp;
}
else{
tnodetemp=Findmin(root->right);
root->data=temp->data;
root->right=Delete(root->right,temp->data);
}
}
return root;
}
void preoder(tnoderoot){
if(root==NULL){return;}
cout<data<<" ";
preoder(root->left);
preoder(root->right);
}
int main() {
int t;
cin>>t;
while(t>0){
int n;
int arr[1000];
for(int i=0;i<n;i++){
cin>>arr[i];
}
tnoderoot=buildtree(arr,0,n-1);
preoder(root);
int k;
cin>>k;
int d[1000];
for(int i=0;i<k;i++){
cin>>d[i];
}
for(int i=0;i<k;i++){
Delete(root,d[i]);
}
preoder(root);
cout<<endl;
t–;
}
return 0;
}
my code