My code is giving segmentation fault, why?
#include<bits/stdc++.h>
using namespace std;
template
class TreeNode{
public:
T data;
TreeNode* left;
TreeNode* right;
TreeNode(T data){
this->data=data;
left=NULL;
right=NULL;
}
};
void printTree(TreeNode* root){
if(root==NULL){
return;
}
cout<<root->data;
if(root->left){
printTree(root->left);
}
if(root->right){
printTree(root->right);
}
}
TreeNode* InPre(int *ino,int *pre,int inS,int inE,int preS,int preE){
int rootData=pre[preS];
TreeNode<int>* root=new TreeNode<int>(rootData);
int i=inS;
while(ino[i]!=rootData){
i++;
}
int linS=inS;
int linE=i-1;
int lpreS=preS+1;
int lpreE=preS+linE-linS+1;
int rinS=i+1;
int rinE=inE;
int rpreS=lpreE+1;
int rpreE=preE;
root->left=InPre(ino,pre,linS,linE,lpreS,lpreE);
root->right=InPre(ino,pre,rinS,rinE,rpreS,rpreE);
return root;
}
int main(){
int n;
cin>>n;
int *pre=new int[n];
int *ino=new int[n];
for(int i=0;i<n;i++){
cin>>ino[i];
}
for(int i=0;i<n;i++){
cin>>pre[i];
}
TreeNode<int>* root=InPre(ino,pre,0,n-1,0,n-1);
printTree(root);
}