题目大意:
给出一个二叉树的中序遍历序列和后序遍历序列求先序遍历序列。
输入样例:
BADC
BDCA
输出样例:
ABCD
题目思路:
后序遍历中最后一个字符是根节点,在中序遍历中找到该跟结点的位置,左边就是左子树的位置,右边就是右子树。
如图所示,在右子树DC中,按照同样的方法进行操作,那么我们就可以通过递归得到整棵树。
题目代码:
#include<cstdio>
#include<iostream>
using namespace std;
string s1, s2;
void f(int p1, int p2, int q1, int q2)
{//stop if(p1>p2 || q1>q2) return;//find index int i = p1;while(s1[i] != s2[q2]) i++;//prnt node cout<<s1[i];//left f(p1, i-1, q1, q1+i-1-p1);//right f(i+1, p2, q1+i-p1, q2-1);
}
int main() {cin>>s1>>s2;int n = s1.length()-1;f(0,n,0,n);return 0;
}