题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入输出格式
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
输入输出样例
输入样例#1:
BADC
BDCA
输出样例#1:
ABCD
分析:之前都是先序,中序求后序,现在反过来求先序。
BADC
BDCA
(1). 后序最后一个是根节点(A);
(2). 在中序找到(A),然后就分为左右子树L(B),R(DC)
(3). 后序倒数第二个是(C),就是右子树的父亲节点
…….
所以,(A)为根,(B)是(A)的左儿子,(C)是(A)的右儿子,(D)是(C)的左儿子。
代码:
var s,s1:string;
i,j,k,l,n,m,o,p,l1,l2:longint;
procedure xx(s,s1:string);
var x:longint;
c:char;
begin
c:=s1[length(s1)];
write(c);
x:=pos(c,s);
if x-1>0 then
xx(copy(s,1,x-1),copy(s1,1,x-1));
if length(s1)-x>0 then
xx(copy(s,x+1,length(s1)-x),copy(s1,x,length(s1)-x));
end;
begin
readln(s);
readln(s1);
xx(s,s1);
end.