求先序排列
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8 \le 8≤8)。
输入输出格式
输入格式:222行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:111行,表示一棵二叉树的先序。
输入输出样例
输入样例#1:
BADC BDCA
输出样例#1:
ABCD
思路:
step1:找到根并输出
step2:将中序,后序各分为左右两棵子树;
step3:递归,重复step1,2;
代码:
#include<cstdio> #include<cstring> using namespace std; char s1[10],s2[10]; void dfs(int l,int r,int x){ printf("%c",s2[r+x]); for(int i=0;i<strlen(s1);i++){ if(s2[r+x]==s1[i]){ if(l<i)dfs(l,i-1,x);//遍历左儿子 if(i<r)dfs(i+1,r,x-1);//遍历右儿子 } } } int main(){ scanf("%s%s",s1,s2); int l=0,r=strlen(s1)-1,x=0; dfs(l,r,x);//dfs return 0; }
OVER!