给定二叉树的先序遍历序列 和中序遍历序列,构建二叉树:
原理:
代码:
node* create(int preL,int preR,int inL,int inR){
if(preL > preR){
return NULL;
}
node* root = new node;
root->data = pre[preL];
int k;
for(k = inL;k<= inR;k++){
if(in[k]==pre[preL]){
break;
}
}
int numLeft = k-inL;
root->lchild = create(preL + 1, preL + numLeft, inL, k - 1);
root->rchild = creat(preL + numLeft + 1, preR, k + 1, inR);
}
上面的代码构建了一颗二叉树,再根据需求遍历即可。