您的位置:首页 > 其它

1013 求先序排列

2015-10-18 21:12 399 查看
2001年NOIP全国联赛普及组

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题目描述 Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入描述 Input Description

两个字符串,分别是中序和后序(每行一个)

输出描述 Output Description

一个字符串,先序

样例输入 Sample Input

BADC

BDCA

样例输出 Sample Output

ABCD

思路:递归

program aa;
var sz,sh:string;
procedure wrok(sz,sh:string);
var l,k:longint;
begin
if (sz='')or(sh='') then exit
else
begin
l:=length(sz);//找出根节点所在位置(后序遍历的最后一个)
k:=pos(sh[l],sz);
write(sh[l]);//输出找到的根节点
wrok(copy(sz,1,k-1){左子树的中序遍历},copy(sh,1,k-1){左子树的后序遍历});//先处理左子树
wrok(copy(sz,k+1,l-k){右子树的中序遍历},copy(sh,k,l-k){右子树的后序遍历});//再处理右子树(因为是先序遍历)
end;
end;
begin
readln(sz);
readln(sh);
wrok(sz,sh);
end.


一点反思:很简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: