Can you tell me why am I getting wrong answer in this case . You can refer to my code shown below
#include<bits/stdc++.h>
using namespace std;
class Node{
public:
int data;
Node *left;
Node *right;
Node(int d){
data=d;
left=NULL;
right=NULL;
}
};
Node *build(int a[],int s,int e){
if(s>e){
return NULL;
}
int mid=(s+e)/2;
Node *root = new Node(a[mid]);
root->left=build(a,s,mid-1);
root->right=build(a,mid+1,e);
return root;
}
void pre(Node * root){
if(root==NULL){
return;
}
cout<<root->data<<" ";
pre(root->left);
pre(root->right);
}
vector ans;
void specialPre(Node *root, int k1,int k2){
if(root==NULL){
return ;
}
if((root->data) >= k1 && (root->data)<= k2){
ans.push_back(root->data);
}
specialPre(root->left,k1,k2);
specialPre(root->right,k1,k2);
}
int main(){
int t;
cin>>t;
int n,k1,k2;
while(t–){
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
Node *root= build(a,0,n-1);
cout<<"Preorder ";
pre(root);
cout<<"\nNodes within range are : ";
cin>>k1>>k2;
specialPre(root,k1,k2);
int n=(k2-k1)+1;
sort(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<" ";
}
}
return 0;
}