欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

中序后序求前序

程序员文章站 2022-05-19 20:56:06
...
#include<bits/stdc++.h>
//中序 后序 求前序
using namespace std;
void f2(string& pre, string in, string post) {
	if (post.length() == 0)//序列为空结束
		return;
	int n = post.length() - 1;//根节点
	char ch = post[n];
	pre += ch;//根节点存入前序中
	//处理左子树
	f2(pre, in.substr(0, in.find(ch)), post.substr(0, in.find(ch)));
	//处理右子树
	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));
}
int main() {
	string pre = "";//ABCDEF
	string in = "fcaegbd";//"CBAEDF";
	string post = "fcgedba";//"CBEFDA";
	f2(pre, in, post);
	cout << pre << endl;
}