由中序后序得到先序的递归算法
假设中序ACGDBHZKX,后序:CDGAHXKZB
由后序序列可得到主根B,继而将中序划分为两个子树,从而也得到后序的两个子树
即acgd,hzkx,后序 cdga ,hxkz
继续递归:
void find_first(string mid,string after){
if (mid.size()>0){
char ch=after[after.size()-1];
cout<<ch;//找根输出
int k=mid.find(ch);
find_first(mid.substr(0,k),after.substr(0,k));
find_first(mid.substr(k+1),after.substr(k,mid.size()-k-1));//递归左右子树;
}
}