题意就是给你一颗二叉树的前序和中序遍历,输出后序遍历
其实是很简单的一道题,唉,做了好几天,真是感觉自己太菜了,但是懂了当你递归不会写时,就用笔运行程序,得出递归的公式
#include<iostream>
#include<string>
using namespace std;
void Dg(string s1,string s2)
{
if(s1.length()==0) return;
int p=s2.find(s1[0],0);//求根节点位置
//后序递归遍历
Dg(s1.substr(1,p),s2.substr(0,p));//递归求左子树substr()是求子串的
Dg(s1.substr(p+1,s2.length()-p-1),s2.substr(p+1,s2.length()-p-1));//递归求右子树
cout<<s2[p];
}
int main()
{
string str1;
string str2;
while(cin>>str1>>str2)
{
Dg(str1,str2);
cout<<endl;
}
}