题目描述 Description
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入描述 Input Description
两个字符串,分别是中序和后序(每行一个)
输出描述 Output Description
一个字符串,先序
样例输入 Sample Input
BADC
BDCA
样例输出 Sample Output
ABCD
数据范围及提示 Data Size & Hint
题解:
树形搜索。
用后序遍历确定根节点,中序遍历确定左右子树。
var s1,s2,s:ansistring;
procedure dfs(l1,r1,l2,r2:longint);
var i:longint;
begin
if l1=r1 then
begin
write(s1[l1]);
exit;
end;
write(s2[r2]);
i:=pos(s2[r2],s1);
if i-1>=l1 then dfs(l1,i-1,l2,l2+i-l1-1);
if r1>=i+1 then dfs(i+1,r1,l2+i-l1,r2-1);
end;
begin
readln(s1);
readln(s2);
dfs(1,length(s1),1,length(s2));
end.
时间: 2024-12-29 15:41:06