Un arbre binaire peut être créé en définissant un type correspondant
à un n
ud de l'arbre. Soit par exemple :
type arbre = ^noeud;
noeud = record
valeur : integer;
gauche : arbre;
droit : arbre;
end;
Une telle structure peut être utilisée pour ordonner des éléments, en
considérant que le sous-arbre gauche d'un n
Figure 6.8: Un exemple d'arbre binaire
Une telle structure est pratique pour effectuer des tris rapides. Le programme suivant permet de créer un arbre d'entiers, de le construire à partir d'une suite de nombres entrés par l'utilisateur, et ensuite de se servir de cet arbre pour afficher par ordre croissant les nombres entrés par l'utilisateur.
program arbresbinaires;
type
pointeur = ^noeud;
noeud = record
valeur : integer;
gauche : pointeur;
droit : pointeur;
end;
var racine : pointeur;
n : integer;
procedure construire(var arbre : pointeur; elt : integer);
begin
if (arbre=nil) then
begin
new(arbre);
arbre^.valeur:=elt;
arbre^.gauche:=nil;
arbre^.droit:=nil;
end
else
if elt<arbre^.valeur then
construire(arbre^.gauche, elt)
else if elt>arbre^.valeur then
construire(arbre^.droit, elt);
end;
procedure afficher(arbre : pointeur);
begin
if not(arbre=nil) then
begin
afficher(arbre^.gauche);
writeln(arbre^.valeur);
afficher(arbre^.droit);
end;
end;
begin
racine:=nil; (* Pascal n'initialise pas les pointeurs a nil *)
write('entrez un nombre:');
readln(n);
while (n>=0) do
begin
construire(racine, n);
write('entrez un nombre : ');
readln(n);
end;
afficher(racine);
end.