next up previous
Next: About this document Up: No Title Previous: Exercice 2

Exercice 3

function delta(a: Arbre):integer;
 begin
  delta:=hauteur(a^.filsD)-hauteur(a^.filsG)
end;

procedure Reequilibre(var a: Arbre);
 begin
  if (delta(a)=2) and (delta(a^.filsD)>=0) then
    rotG(a)
  else if (delta(a)=2) and (delta(a^.filsD))=-1) then
     drotG(a)
  else if (delta(a)=-2) and (delta(a^.filsG)<=0) then
   rotD(a)
  else if (delta(a)=-2) and (delta(a^.filsG)=1) then
   drotD(a)
  else a^.h:=max(hauteur(a^.filsG),hauteur(a^.filsD))+1
 end;

procedure Inserer(x: Element;var a: Arbre);
 begin
  if a=nil then a:=Nouvelarbre(x,nil,nil)
  else if x< a^.contenu then begin
     Inserer(x,a^.filsG);
     Reequilibre(a)
     end
  else if x> a^.contenu then begin
     Inserer(x,a^.filsD);
     Reequilibre(a)
     end
 end;



Dominique Perrin
Mon Nov 25 14:55:52 MET 1996