Why test cases is 2 wrong

#include
using namespace std;
struct node{
int data;
node* left;
node* right;
};
int sum=0;
node* buildbst(node *root){
int d;
cin>>d;

if(root==NULL){

root =new node;
root->data=d;
root->left=NULL;
root->right=NULL;
}
string str1,str2;
cin>>str1;
if(str1==“true”){
root->left=buildbst(root->left);
cin>>str2;
if(str2==“true”){
root->right=buildbst(root->right);
}
else{
root->left=NULL;
root->right=NULL;
}

}
else{
cin>>str2;
if(str2==“true”){
root->right=buildbst(root->right);
}
else{
root->left=NULL;
root->right=NULL;
}

}
return root;
}

int issymetrical(node *root,node *root1){
if(root==NULL&&root1==NULL){
return 1;
}
if(root1!=NULL&&root!=NULL&&root->data!=root1->data){
return 0;
}
return issymetrical(root->left,root1->left)&& issymetrical(root->right,root1->right);
}
int main() {

    node* root=NULL;
    
   root= buildbst(root);
       node *root1=NULL;
       root1=buildbst(root1);
       int p=issymetrical(root,root1);
    if(p==1){
        cout<<"true";
    }
    else{
        cout<<"false";
    }

return 0;

}

@dineshjani

Save your code on ide.codingblocks.com and post the link here