const SIZE = 127,
BOTTOM = -1 ;
var x, i,
root, next,
A [SIZE], L [SIZE], R [SIZE] ;
begin
loop until left_leaf or right_leaf :
if x < A[i] then
if L[i] <> BOTTOM then i := L[i] else left_leaf ;
else
if R[i] <> BOTTOM then i := R[i] else right_leaf ;
repeat
with
left_leaf -> L[i] := next ;
right_leaf -> R[i] := next ;
end ;
A[next] := x ; L[next] := BOTTOM ; R[next] := BOTTOM ;
next := next + 1 ;
end ;
Figure 1 : Exemple d'utilisation des indicateurs de
situation.
Un arbre binaire de recherche est codé dans les tableaux
A (qui détient les valeurs),
L (qui contient
l'indice dans les tableaux du fils gauche) et
R (fils
droit). La variable
next est le prochain emplacement
libre dans les tableaux. La variable
root est l'indice
de la racine de l'arbre. La valeur
BOTTOM pour
L ou
R dénote un fils non existant. (Voir
figure
2.)
left_leaf et
right_leaf sont deux
indicateurs de situation.
Ce code insère la valeur
x dans l'arbre de racine
i (on suppose
x non présent dans l'arbre).
Figure 2 : Représentation d'un arbre binaire de recherche par des
tableaux.