给定中序和后序遍历,求前序序列(C++递归方式实现)

问题:

输入后序和中序,求中序遍历。

算法:

 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 }
欢迎转载,但请声明出处。
原文地址:https://www.cnblogs.com/tianjiqx/p/5312185.html