zadatak je takav da se u drvo clanovi dodaju na osnovu broja,a pretrayuje se po imenu
Ovo meni nije jasno:
Ovo je zadatak u kome je binarno drvo def. ovako:
tree:^cvor;
cvor = RECORD
info:treeinfo; {treeinfo je tipa integer}
left,right:tree;
end;
Ako proceduru za brisanje napisem ovako, radi kako treba
Code:
procedure brisi(var t:tree;x:treeinfo);
var
p,q,r:tree;
begin
if t<> nil then
if x<t^.info then brisi(t^.left,x)
{trazi cvor sa sadrzajem x koji treba da se obrise}
else
if (x>t^.info ) then brisi(t^.right,x)
else
begin
p:=t;
if (p^.left=nil) then t:=p^.right
else
if p^.right=nil then t:=p^.left
else
begin
q:=t^.left;
r:=q;
while q^.right<>nil do
begin
r:=q;
q:=q^.right;
end;
p^.info:=q^.info;
r^.right:=q^.left;
p:=q;
end;
dispose(p);
end;
end;
A ako umjesto prva tri reda koristim funkciju find_node koja vraca pokazivac na cvor koji treba da se obrise ,ne radi
Code:
procedure brisi(var t:tree;x:treeinfo);
var
p,q,r:tree;
begin
if t<> nil then
p:=find_node(t,x);
if p=nil then writeln('Nema takvog cvora u drvetu')
else
begin
t:=p;
if (p^.left=nil) then t:=p^.right
else
if p^.right=nil then t:=p^.left
else
begin
q:=t^.left;
r:=q;
while q^.right<>nil do
begin
r:=q;
q:=q^.right;
end;
p^.info:=q^.info;
r^.right:=q^.left;
p:=q;
end;
dispose(p);
end;
end;