题目地址:http://codevs.cn/problem/1013/
分析:
由二叉树知识可知:
先序——根节点+左分支先序+右分支先序
中序——左分支中序+根节点+右分支中序
后序——左分支中序+右分支中序+根节点
由题
——读入中序与后序
——由后序最后一位知根节点
——输出根节点
——在中序中找到根节点,由此分为左分支与右分支
——生成左右两分支的先序与后序
——继续如上过程
代码:
var
m,l:string;
procedure f1(m,l:string);
var x,x_m,x_l:string; i,l_:integer;
begin
l_:=length(m);
write(l[l_]);
x:=copy(l,l_,1);
i:=pos(x,m);
if i>1 then begin
x_m:=copy(m,1,i-1);
x_l:=copy(l,1,i-1);
f1(x_m,x_l);
end;
if i<l_ then begin
x_m:=copy(m,i+1,l_-i);
x_l:=copy(l,i,l_-i);
f1(x_m,x_l);
end;
end;
begin
readln(m);
readln(l);
f1(m,l);
end.