首页 > 代码库 > 2001求先序排列

2001求先序排列

题目描述 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.

2001求先序排列