问题:
输入后序和中序,求中序遍历。
算法:
1 void f2(string &pre,string in, string post) 2 { 3 if(post.length()==0) //序列为空结束 4 return; 5 int n=post.length()-1; //根节点 6 char ch=post[n]; 7 pre+=ch;//根节点存入前序中 8 9 //处理左子树 10 f2(pre,in.substr(0,in.find(ch)),post.substr(0,in.find(ch))); 11 12 //处理右子树 13 f2(pre,in.substr(in.find(ch)+1,in.length()-in.find(ch)-1),post.substr(in.find(ch),in.length()-in.find(ch)-1)); 14 15 } 16 void main() 17 { 18 string pre=""; //ABCDEF 19 string in="CBAEDF"; 20 string post="CBEFDA"; 21 f2(pre,in,post); 22 cout<<pre<<endl; 23 }