二叉树的创建(从两个遍历方式得出)
先序和中序求后序
void printLast(string s1,string s2){
if(s1=="\0"||s2=="\0"){
return;
}
//根节点
int pos=s2.find(s1[0]);
//左子树
printLast(s1.substr(1,pos),s2.substr(0,pos));
//右子树
printLast(s1.substr(1+pos),s2.substr(pos+1));
cout<<s1[0];
}
//先序:abeidj
//中序:ebiadj
//后序:eibjda
后序和中序求先序
void printPre(string s1,string s2){
if(s1=="\0"||s2=="\0"){
return;
}
int size=s2.size()-1;
//根节点
int pos=s1.find(s2[size]);
cout<<s1[pos];
//左子树
printPre(s1.substr(0,pos),s2.substr(0,pos));
//右子树
printPre(s1.substr(pos+1),s2.substr(pos,size-pos));
}
//先序:abeidj
//中序:ebiadj
//后序:eibjda
如有不足之处,欢迎批评指正!