讨论 / 二叉树搜索- 哪里错了 帮忙看看啊
583158450 2011-07-16 21:37:00
点我顶贴 收藏 删除
type

rec=record

x,num:byte;

l,r:integer;

end;

arr=array[1..10000]of rec;

var

i,j,top:integer;

p,n:byte;

a:arr;

procedure serch(q,t:byte);{二叉树构建}

var

i,j:integer;

begin

if a[t].x=0 then

begin

a[t].x:=q;

inc(a[t].num);

end

else

begin

if a[t].x=q then inc(a[t].num);

if (a[t].x) > q then

if a[t].l=0 then

begin

inc(top);

a[t].l:=top;

serch(q,a[t].l);

end

else

serch(q,a[t].l);

if (a[t].x)<q then

if a[t].r=0 then

begin

inc(top);

a[t].r:=top;

serch(q,a[t].r);

end

else

serch(q,a[t].r);

end;

end;

procedure print(i:integer);{输出}

begin

if a[i].l<>0 then print(a[i].l);

write(a[i].x);

write(' ');

writeln(a[i].num);

if a[i].r<>0 then print(a[i].r);

end;

begin

read(n);

for i:=1 to n do

begin

a[i].x:=0;

a[i].num:=0;

a[i].l:=0;

a[i].r:=0;

end;

top:=1;

for i:=1 to n do

begin

read(p);

serch(p,1);

end;

print(1);

end.

查看更多回复
提交回复