#include "iostream"
#include "string"
#include "map"
#include<queue>
#include<cstdio>
#include <string.h>
#include "string"
//样例输入
//AB
//BA
//样例输出
//BA
void get_end(char *pre,char *mid,char *end,int len){
//cout<<len<<endl;
if(len==0) return;
int root=strchr(mid,pre[0])-mid;//中序中根的位置
printf("%c\n",pre[root]); //左子树的长度
int l=root;//右子树的长度 (也要减去根节点)
int r=len-l-1;
/*
因为len 的变化是从leftlen->0 rightlen->0
在左子树递归时 保存后序的end 是从0开始
在右子树递归时 保存后序的end 要从end+leftlen开始
在这里理解了很久 所以加上注释
*/
get_end(pre+1,mid,end,l);
get_end(pre+l+1,mid+l+1,end+l,r);
/*
根据先序遍历规则 根节点+左子树序列+右子树序列
所以每一个pre[0] 都是当前树的根节点
而后序遍历规则 左子树序列&#