基智通理财计划:用pascal语言编写算法,输入前序及中序,输出二叉树的后序

来源:百度文库 编辑:高校问答 时间:2024/05/09 04:45:36
用pascal语言编写算法,输入前序及中序,输出二叉树的后序
编好了请发我邮箱:hbx-200402@163.com

var
s1,s2:string;

procedure search(s1,s2:string);
var
p,len:longint;
sa,sb:string;
ch:char;
begin
len:=length(s1); {len: 树的节点数}
ch:=s2[1]; {ch : 前序的第一个字母是根节点}
p:=pos(ch,s1); {p : 根节点在中序中的位置}
{左子树:}
sa:=copy(s1,1,p-1); {sa: 子树的中序}
sb:=copy(s2,2,p-1); {sb: 子树的前序}
if sa<>'' then search(sa,sb);
{右子树:}
sa:=copy(s1,p+1,len-p);
sb:=copy(s2,p+1,len-p);
if sa<>'' then search(sa,sb);
{输出根节点}
write(ch);
end;

begin
readln(s1); {读入中序}
readln(s2); {读入前序}

search(s1,s2); {递归}
writeln;
end.

以前做usaco时编的,用的是递归,比较简单易懂
注意:这里s1读入的是中序,s2读入的是前序

用分治