Accueil     Soft. MacOSX     Soft. MacOS/PC     PHP     Python     ROMS GBA     TP d'info     DBZ-GT     Martingales     Galeries     Liens     @  

Exercice du TD11 u_arbre

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.





Haut de la page - Page précédente - Page générée en 0.00200 sec.
Recherche personnalisée
 

1845019 visiteurs.   ©2001-2023 All Rights Reserved to Software-DS.com
Made with a mac  
Confidentialité