洛谷——P1030 求先序排列
https://www.luogu.org/problem/show?pid=1030#sub
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入输出格式
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
输入输出样例
输入样例#1:
BADC BDCA
输出样例#1:
ABCD
1 #include <algorithm> 2 #include <cstring> 3 #include <cstdio> 4 5 #define N 10015 6 7 using namespace std; 8 9 char midx[N],bhdx[N]; 10 char midd[N],bhdd[N]; 11 12 void DFS(int l,int r,int L,int R) 13 { 14 printf("%c",bhdx[R]); 15 if(bhdd[R]>l) DFS(l,bhdd[R]-1,L,bhdd[R]-l+L-1); 16 if(bhdd[R]<r) DFS(bhdd[R]+1,r,R-(r-bhdd[R]),R-1); 17 } 18 19 int main() 20 { 21 scanf("%s",midx); 22 scanf("%s",bhdx); 23 int n=strlen(midx); 24 for(int i=0;i<n;i++) midd[midx[i]]=i; 25 for(int i=0;i<n;i++) bhdd[i]=midd[bhdx[i]]; 26 DFS(0,n-1,0,n-1); 27 return 0; 28 }
——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。