首页 > 代码库 > 前序和中序,求出后序遍历

前序和中序,求出后序遍历

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=4e3+20;
int n;
string a,b;//a,b分别为前序和中序遍历结果 
//后序:左子树后序+右子树后序+根 
void dfs(char *a,char* b,int len)
{
	if(len<1) return;
	int i=0;
	while(b[i]!=a[0]) i++;
	dfs(a+1,b,i);
	dfs(a+i+1,b+i+1,len-i-1);
	cout<<a[0];
}
int main()
{
	char a[N],b[N];
	scanf("%s%s",a,b);
	n=strlen(a);
	dfs(a,b,n);
	cout<<endl;
	return 0;
}

  

前序和中序,求出后序遍历