Bonjour, je souhaite mettre cette implantation en temps constant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  ABin = ^_CellABin;
  _CellABin =
    record
     _suivG, _suivD : ABin
    end;
 
function Hauteur (a : ABin) : integer;
begin
  if EstVide(a) then
    Hauteur := 0
  else
    Hauteur := 1 + max(Hauteur(SAGauche(a)), Hauteur(SADroit(a)))
end;
(toutes les fonctions utilisées dans hauteur sont supposées définies)

J'ai mis ça pour que ce soit en temps constant mais ça n'a pas l'air correct :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type
  ABin = ^_CellABin;
  _CellABin =
    record
     _suivG, _suivD : ABin;
     _haut : integer;
    end;
 
function Hauteur (a : ABin) : integer;
begin
  if EstVide(a) then
    Hauteur := 0
  else
    Hauteur := a^._haut;
end;