永发信息网

PASCAL二叉树的建立

答案:1  悬赏:20  手机版
解决时间 2021-04-23 17:54

RT

用先序遍历+递归+链式存储

最好基本框架和源程序都有

多谢

最佳答案

已知先序中序:
procedure Solve(pre,mid:string);
var i:integer;
begin
if (pre='') or (mid='') then exit;
i:=pos(pre[1],mid);
solve(copy(pre,2,i),copy(mid,1,i-1));
solve(copy(pre,i+1,length(pre)-i),copy(mid,i+1,length(mid)-i));
post:=post+pre[1]; {加上根,递归结束后post即为后序遍历}
end;
已知中序后序:
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;
已知先序后序:
function ok(s1,s2:string):boolean;
var i,l:integer; p:boolean;
begin
ok:=true;
l:=length(s1);
for i:=1 to l do begin
p:=false;
for j:=1 to l do
if s1[i]=s2[j] then p:=true;
if not p then begin
ok:=false;exit;
end;
end;^
end;
procedure solve(pre,post:string);
var i:integer;
begin
if (pre='') or (post='') then exit;
i:=0;
repeat
inc(i);
until ok(copy(pre,2,i),copy(post,1,i));
solve(copy(pre,2,i),copy(post,1,i));
midstr:=midstr+pre[1];
solve(copy(pre,i+2,length(pre)-i-1),
copy(post,i+1,length(post)-i-1));
end;


给出一棵二叉树的中序与后序排列。求出它的先序排列。
[分析] 通过对比二叉树的中序与后序排列,我们可以找出根节点及左右子树。同样的,有可以通过对比左子树的中序与后序排列,找出左子树的根节点……可见,该问题能够被递归描述。当找到最后一个根节点时,递归无法再进行下去,这就是递归结束的边界条件。由此可见,递归算法中常常隐含了分治思想。程序如下:
program chu01_3;
 var z,h: string;
 procedure find(a,b:string);
  var
   s,l : integer;
  begin
   l:=length(b);
   if l=1 then Write(b) {边界条件及递归返回段}
   else
    begin {递归前进段}
     Write(b[l]);
     s:=pos(b[l],a);
     if s-1>0 then find(copy(a,1,s-1),copy(b,1,s-1)); {递归左子树}
     if l-s>0 then find(copy(a,s+1,l-s),copy(b,s,l-s)); {递归右子树}
    end;
 end;
begin
 Readln(z);
 Readln(h);
 Find(z,h);
 Readln;
end.


链式存储就不要举例子了吧……太容易了


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
攀枝花塘地址在哪,我要去那里办事
侠盗飞车罪恶都市里的最后2个任务怎么开启?
来自父母滴压力,偶该怎么办?
电脑无故蓝屏
小器是什么意思,“除非”的英语单词怎么拼急
帮我写一张英语请假条
是不是qq飞车冲啦紫钻qq号也是紫钻?
怎样从培正学院坐车去仲恺农业大学
绝迹是什么意思
我的VC++6.0怎么没有\VC98\CRT\SRC ~~
为什么女人都要怪男人花心?
魔兽DOTA施法距离是如何计算的?
我难过的时候该怎么办?
借个迅雷会员号下游戏
蔡义江红楼梦诗词,急求!!红楼梦开篇词!!
推荐资讯
诺基亚的手机哪款好啊?
万圣节的摩尔装扮。高手进
温州瓯01、909公交路线
e680手机主题bigbang
多么多么写一句话,多么……多么……写句子
温柔的背叛李歆的睡衣哪里有卖
经常腿抽筋是什么原因引起的?
几岁开始学做发型设计的?
网页中的这个功能是怎么做的哦
会有长久的爱情么?
大军师司马懿之军师联盟42集,42分45秒,曹丕
爱是一种错吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?