写给自己
2024-03-01 20:55:54
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
//处理中序遍历为是,后序遍历为t的字串 
void dfs(string s,string t){
	if(s.size()==0) return;
	int id=s.find(t.back());//后序的最后一个字母 (根)在中序中的位置 
	cout<<s[id];//输出 
	dfs(s.substr(0,id),t.substr(0,id));   
	dfs(s.substr(id+1,s.size()-id-1),t.substr(id,s.size()-id-1));    
}
int main(){
	string s,t;
	cin>>s>>t;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
//处理前序遍历为是,后序遍历为t的字串 
void dfs(string s,string t){
	if(s.size()==0) return;
	int id=t.find(s[0]);//找前序的最后一个字母 (根)在中序中的位置 
	dfs(s.substr(1,id),t.substr(0,id));//前序遍历的左子树从下标1开始的id个字符,中序遍
//历的左子树从下标开始的id个字符   
	dfs(s.substr(id+1,s.size()-id-1),t.substr(id+1,s.size()-id-1));//前
//序遍历的右子树从下标开始的
	cout<<s[0];    
}
int main(){
	string s,t;
	cin>>s>>t;
	dfs(s,t);
	return 0;
}
这里空空如也






有帮助,赞一个