后序中序遍历问题 求原程序

来源:百度知道 编辑:UC知道 时间:2024/06/18 11:10:40
′问题描述:
给定一棵有n个结点的二叉树,结点的编号为1,2,…,n。已知二叉树结点编号的后
序和中序列表,试设计一个算法,确定该二叉树结点编号的前序列表。
′实验任务:
对于给定的二叉树结点编号的后序和中序列表,计算二叉树结点编号的前序列表。
′数据输入:
由文件input.txt给出输入数据。第一行有1 个正整数 n,表示给定的二叉树有 n个顶点,
编号为1,2,…,n。接下来的2行中,第1行是二叉树结点编号的后序列表,第2 行是二
叉树结点编号的中序列表。
′结果输出:
将计算出的二叉树结点编号的前序列表输出到文件output.txt。
输入文件示例 输出文件示例
input.txt output.txt
1 4 3 2 5
5
3 4 5 2 1
3 4 1 5 2

procedure Solve(mid,post:string);
var i:integer;
begin
if (mid='''') or (post='''') then exit;
i:=pos(post[length(post)],mid);
pre:=pre+post[length(post)]; {加上根,递归结束后pre即为前序遍历}
solve(copy(mid,1,I-1),copy(post,1,I-1));
solve(copy(mid,I+1,length(mid)-I),copy(post,I,length(post)-i));
end;

这是一个用字符串实现的程序
具体在做的时候把字符串改为数组就行了
大概算法是这样的