求先序排列
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入输出格式
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
分析:后序的最后一个节点是根节点,找到这个点在先序中的位置,然后以这个位置划分左右子树。
代码
var
s1,s2:string;
procedure dfs(s1,s2:string);
var
ch:char;
i:longint;
begin
ch:=s2[length(s2)];
write(ch);
i:=pos(ch,s1);
if i>1 then dfs(copy(s1,1,i-1),copy(s2,1,i-1));
if length(s2)-i>0 then dfs(copy(s1,i+1,length(s2)-i),copy(s2,i,length(s2)-i));
end;
begin
readln(s1);
readln(s2);
dfs(s1,s2);
end.