binary treee tle problem

#include<bits/stdc++.h>
using namespace std;

class node{
public:
int data;
node *left;
node *right;

node(int data){
    this->data=data;
    left=NULL;
    right=NULL;

}

};

int bsearch(int in[],int start,int end,int key) {
while(start <end){

int mid = start = (end - start) / 2;

if (in[mid] == key)
    return mid;

else if (in[mid] > key)
    return bsearch(in, start, mid - 1, key);

else
    return bsearch(in, mid + 1, end, key);

}
}

node *createnextnode(int *in,int *pre,int s,int e){

static int i=0;
if(s>=e)
    return 0;

int index=-1;
int key=pre[i];
index=bsearch(in,s,e,pre[i]);
  
  node *root=new node(pre[i]);
  i++;

root->left=createnextnode(in,pre,s,index-1);
root->right=createnextnode(in,pre,index+1,e);

return root;
}
void bfs(node *root){
queue<node *>q;
q.push(root);
q.push(NULL);
while(!q.empty()){
node *f=q.front();
if(f==NULL) {
cout << endl;
q.pop();
if(!q.empty())
q.push(NULL);
}
else {
cout << f->data << “,”;
q.pop();
}
if(f->left)
q.push(f->left);
if(f->right)
q.push((f->right));
}
}

int main(){
int in[]={3,2,8,4,1,6,7,5};
int pre[]={3,2,8,4,1,6,7,5};
int n=sizeof(in)/sizeof(in[0]);
node *root=createnextnode(in,pre,0,n-1);

//bfs(root);

return 0;

}