unit u_arbre;
interface
type
type_elts = char;
arbre = ^didier;
didier = record
ch: type_elts;
gauche: arbre;
droite: arbre;
end;
procedure Init_arbre (var a: arbre);
function Feuille (a: arbre): boolean;
procedure Vide_arbre (var racine: arbre);
function Creat_feuille (elt: type_elts): arbre;
function Creat_noeud (elt: type_elts; fg, fd: arbre):
arbre;
procedure Parcours_prefixe (racine: arbre);
procedure Parcours_infixe (racine: arbre);
procedure Parcours_postfixe (racine: arbre);
implementation {
http://www.Software-DS.com }
procedure Init_arbre (var a: arbre);
begin
a := nil;
end; { Fin de
'Init_arbre' }
function Feuille (a: arbre): boolean;
begin
if a <> nil then
begin
if (a^.gauche = nil) and (a^.droite = nil) then
Feuille := true
else
Feuille := false;
end
else
Feuille := false;
end; { Fin de
'Feuille' }
procedure Vide_arbre (var racine: arbre);
begin {
Desallocation par recurrence }
if racine^.gauche <> nil
then
Vide_arbre(racine^.gauche);
if racine^.droite <> nil then
Vide_arbre(racine^.droite);
dispose(racine);
end; { Fin de
'Vide_arbre' }
function Creat_feuille (elt: type_elts): arbre;
var
b: arbre;
begin
new(b);
b^.ch := elt;
b^.gauche := nil;
b^.droite := nil;
Creat_feuille := b;
end; { Fin de
'Creat_feuille' }
function Creat_noeud (elt: type_elts; fg, fd: arbre):
arbre;
var
racine: arbre;
begin
racine := Creat_feuille(elt);
racine^.droite := fd;
racine^.gauche := fg;
Creat_noeud := racine;
end; { Fin de
'Creat_noeud' }
procedure Parcours_prefixe (racine: arbre);
begin
write(racine^.ch, ' ');
if racine^.gauche <> nil then
Parcours_prefixe(racine^.gauche);
if racine^.droite <> nil then
Parcours_prefixe(racine^.droite);
end; { Fin de
'Parcours_prefixe' }
procedure Parcours_infixe (racine: arbre);
begin
if racine^.gauche <> nil then
Parcours_infixe(racine^.gauche);
write(racine^.ch, ' ');
if racine^.droite <> nil then
Parcours_infixe(racine^.droite);
end; { Fin de
'Parcours_infixe' }
procedure Parcours_postfixe (racine: arbre);
begin
if racine^.gauche <> nil then
Parcours_postfixe(racine^.gauche);
if racine^.droite <> nil then
Parcours_postfixe(racine^.droite);
write(racine^.ch, ' ');
end; { Fin de
'Parcours_postfixe' }
{ ©2001 All
Rights Reserved to http://www.Software-DS.com
18/12/01 }
end.
|