Вы находитесь на странице: 1из 7

Institut Galile

Anne 2010-2011

Algorithmique et arbres
L2

TD 6

Les arbres binaires de recherche


Type en C des arbres binaires (galement utilis pour les ABR) :
typedef struct noeud_s {
struct noeud_s * parent;
struct noeud_s * gauche;
struct noeud_s * droite;
element_t e;
} * ab_t, * abr_t;
Exercice 1.
Combien y a til de formes darbres binaires diffrents (respectivement) 1, 2, 3, 4 nuds ? Les
dessiner (sans donner de contenu aux nuds).
Pour n fix quelconque donner un exemple darbre binaire de hauteur majore par log n + 1,
et un exemple darbre binaire de hauteur n.
Exercice 2.
crire une fonction Taille(x) prenant un arbre binaire et rendant le nombre de ses lments.
Exercice 3.
crire une fonction Hauteur(x) prenant un arbre binaire et rendant sa hauteur, cest dire le
nombre dlments contenus dans la plus longue branche.
Exercice 4.
Dans les deux exemples darbres binaires de recherche de la figure 1 :
1. o peut-on insrer un lment de cl 13 ?
2. comment peut-on supprimer llment de cl 14 ?

12
3
2

14
5

14
5

15

18
9

15

19

Figure 1: Deux arbres binaires de recherche


Les rotations des arbres binaires sont donnes dans la figure 2. Elles se lisent comme ceci.
Une rotation droite de centre x consiste en : prendre llment a de x, le sous-arbre droite
E de x, la racine y du sous-arbre gauche de x, llment b contenu dans y , et C et D les deux
sous-arbres gauche et droite de y ; remplacer a par b dans x, remplacer le sous-arbre gauche de
x par C , et le sous-arbre droite de x par un arbre de racine contenant a (on utilise y pour des
raisons dimplantation) et dont les sous-arbres gauche et droite sont respectivement D et E . La
rotation gauche de centre x est lopration rciproque.
Avec cette manire dcrire les rotations la rfrence de x son parent na pas besoin dtre
mise jour. Il est assez standard de trouver une version qui change la place de x et de y plutt
que dchanger leurs lments mais nous ne lutilisons pas ici.
3. Sur le premier exemple de la figure 1, faire : une rotation droite de centre le nud de
cl 3 ; puis une rotation gauche de centre le nud de cl 14.
1

x
a

y
b

rotation_droite(x)
E

rotation_gauche(x)

b
C

y
a

C
D
D
E
Figure 2: Rotations gauche et droite. Dans cette version les lments a et b sont changs entre
les nuds x et y mais x garde sa place dans larbre qui le contient.

4. Sur le second exemple de la figure 1, laide de rotations dont vous prciserez le sens et le
centre, amener le nud de cl 9 la racine.
5. Dmontrer que toute rotation prserve la proprit dtre un arbre de recherche.
6. crire lalgorithme de rotation droite en C.
7. crire un algorithme permettant de remonter la racine nimporte quel nud dun arbre
binaire de recherche, laide de rotations.
Exercice 5 (Insertion / suppression ABR).
Former un arbre binaire de recherche en insrant successivement et dans cet ordre les lments : 10, 7, 3, 9, 11, 5, 6, 4, 8 (rpondre en reprsentant larbre obtenu). Supprimer llment 7.
(rpondre en reprsentant le nouvel arbre. Il y a deux rponses correctes possibles, selon la
variante choisie pour lalgorithme de suppression, nen donner quune seule).

1,5 pt
13 min

Exercice 6 ( la fois ABR et tas ?).


Un tas est ncessairement un arbre binaire quasi-parfait. Est-il toujours possible dorganiser un
ensemble de n cls (n quelconque) en tas max de manire ce que cet arbre binaire soit aussi
un arbre binaire de recherche ? (Justifier par un raisonnement ou un contre-exemple).

1,5 pt
9 min

Exercice 7.
On peut afficher les lments dun ABR de taille n en ordre tri en un temps O(n).
1. Expliquer comment et argumenter sur le temps dexcution.
2. Est-ce que la proprit de tas permet dafficher en ordre tri et en temps O(n) les lments
dun tas de taille n ? Argumenter. Indication : on peut planter (former) un tas de n lments
en un temps (n).

Corrig
Correction de lexercice 1.
Un seul arbre un nud, deux deux neuds :
b
b

b
b

Cinq trois nuds :


b

b
b

Quatorze arbres quatre nuds (non dessins). On peut le calculer en trouvant la rcurrence :

Cn+1 =

n
X

Ck Cnk

k=0

Qui donne ici C4 = C0 C3 + C1 C2 + C2 C1 + C3 C1 = 5 + 2 + 2 + 5 = 14. (nombres de


Catalan).
Pour n fix larbre quasi-parfait n nuds est tel que si sa hauteur est h alors :

2h1 1 < n 2h 1
Do h 1 log n < h, donc log n + 1 majore h.
Larbre peigne est quand lui exactement de hauteur n.

Correction de lexercice 2.
int taille(ab_t x) {
if (estVide(x)) {
return 0;
}
return 1 + taille(gauche(x)), taille(droite(x));
}

Correction de lexercice 3.
void hauteur(ab_t x) {
if (estVide(x)) {
return 0;
}
return 1 + max(hauteur(gauche(x)), hauteur(droite(x)));
}

Correction de lexercice 4.
Linsertion est donne par les figures 3 et 4.
La suppression est donne par les figures 5 et 6.
1. Figure 7.
2. rotation gauche de centre 5, puis rotation droite de centre 14.

12
3

14
5

13

15

Figure 3: Un arbre binaire de recherche - corrig


14
5
2

18
9

15

19

13

Figure 4: Un autre arbre binaire de recherche - corrig


3. Il faut montrer la prservation de la proprit darbre de recherche. On se contente de
montrer que si larbre gauche de la figure est un arbre binaire de recherche alors larbre
droite en est un,et rciproquement. En effet, pour larbre qui contient lun de ces deux
arbres comme sous-arbre, le fait de remplacer lun par lautre ne fait aucune diffrence :
les deux sous-arbres ont mmes ensembles dlments. Pour chacun des deux arbres de la
figure on montre qutre un arbre de recherche, sous lhypothse que C , D et E en sont,
est quivalent la proprit : c C , d D , e E , cle(c) cle(b) cle(d) cle(a)
cle(e), ce qui conclue.
4. /* Rotations :
x -> a
/ \
b
E
/ \
C
D

---rot. droite de centre x-->


<--rot. gauche de centre x---

*/
void rotation_droite(ab_t x){
element_t tmp;
ab_t y;
assert(x && x->gauche);
y = x->gauche;
/* change des lments */
tmp = x->e;
x->e = y->e;
4

b <- x
/ \
C
a
/ \
D
E

12
3

15
5

Figure 5: Un arbre binaire de recherche - corrig B


15
5
2

18
9

19

Figure 6: Un autre arbre binaire de recherche - corrig B

y->e = tmp;
/* dplacement des sous-arbres */
x->gauche = y->gauche;
y->gauche = y->droite;
y->droite = x->droite;
x->droite = y;
/* mise jour des parents */
(x->gauche)->parent = x;
(y->droite)->parent = y;
}

void rotation_gauche(ab_t x){


element_t tmp;
ab_t y;
assert(x && x->droite);
y = x->droite;
/* change des lments */
tmp = x->e;
x->e = y->e;
y->e = tmp;
/* dplacement des sous-arbres */
x->droite = y->droite;
y->droite = y->gauche;
y->gauche = x->gauche;

12
15

2
3

14
5

Figure 7: Question 3.1 - corrig

x->gauche = y;
/* mise jour des parents */
(x->droite)->parent = x;
(y->gauche)->parent = y;
}
5. Voici lalgo en pseudo-code.
Fonction Remonter(x)

y = Parent(x);
si y 6= NULL alors
/* y existe, x nest pas la racine
si x == Gauche(y) alors
/* x est fils gauche de y
RotationDroite (y );
sinon
/* x est fils droit de y
RotationGauche (y );
/* Llment qui tait dans le nud x est dsormais dans le nud y
Remonter (y );
Et en C :
void remonter(abr_t x) {
y = x->parent;
if (y) { /* x nest pas encore la racine */
if (x == y->gauche) {
rotation_droite(y);
}
else {
rotation_gauche(y);
}
/* llment qui tait contenu dans x est maintenant dans y */
remonter(y);
}
}

Correction de lexercice 5.
Pas de correction.

*/
*/

*/
*/

Correction de lexercice 6.
Ds que n vaut 3 on est confront un problme si a est llment la racine de larbre
quasi-parfait et que b est son fils gauche et c sont fils droit alors par la proprit des tas on doit
avoir a c et par la proprit des ABR a < c. Impossible.

Correction de lexercice 7.
On peut le faire avec la fonction de parcours infixe. Cette fonction est appele une fois sur
chaque nud de larbre et une fois et chacun de ses appels gnre au maximum 2 appels sur des
nuds vides (NULL) ne gnrant aucun nouvel appel. Ainsi il y a au maximum 3 n appels cette
fonction au cours dun parcours (on pourrait tre plus prcis et trouver 2n + 1) et chaque appel
se faisant en temps constant (pas de boucle), le temps total du parcours est
void parcours_infixe(abr_t x) {
if (x) {
parcours_infixe(x->gauche);
affiche_element(x->e);
parcours_infixe(x->droite);
}
}
Si on pouvait parcourir les lments dun tas en ordre tri en temps O(n), comme on plante
un tas en O(n), on aurait un tri par comparaison en O(n). Impossible. Le parcours du tas en ordre
tri est ainsi ncessairement en (n log n).

Вам также может понравиться

  • Ac 4
    Ac 4
    Документ27 страниц
    Ac 4
    Mohammed Rammeh
    Оценок пока нет
  • 3eme Ser Info
    3eme Ser Info
    Документ167 страниц
    3eme Ser Info
    amnainfo
    Оценок пока нет
  • Exo02 Linkedlist
    Exo02 Linkedlist
    Документ4 страницы
    Exo02 Linkedlist
    Mohammed Rammeh
    Оценок пока нет
  • Sda td3 Piles Files PDF
    Sda td3 Piles Files PDF
    Документ2 страницы
    Sda td3 Piles Files PDF
    Mohammed Rammeh
    Оценок пока нет
  • Exam 301 Janv 12
    Exam 301 Janv 12
    Документ2 страницы
    Exam 301 Janv 12
    Mohammed Rammeh
    Оценок пока нет
  • TD Piles Files
    TD Piles Files
    Документ2 страницы
    TD Piles Files
    Mohammed Rammeh
    Оценок пока нет
  • Sda Td3 Piles Files
    Sda Td3 Piles Files
    Документ2 страницы
    Sda Td3 Piles Files
    Mohammed Rammeh
    Оценок пока нет
  • Sda Td5 Arbres Equilibres Corrige
    Sda Td5 Arbres Equilibres Corrige
    Документ8 страниц
    Sda Td5 Arbres Equilibres Corrige
    Mohammed Rammeh
    Оценок пока нет
  • Examen 10
    Examen 10
    Документ8 страниц
    Examen 10
    RosaBlume
    Оценок пока нет
  • TD6
    TD6
    Документ2 страницы
    TD6
    Mohammed Rammeh
    Оценок пока нет
  • ds2 2
    ds2 2
    Документ3 страницы
    ds2 2
    Mohammed Rammeh
    Оценок пока нет
  • Ds 200905
    Ds 200905
    Документ3 страницы
    Ds 200905
    Mohammed Rammeh
    Оценок пока нет
  • 306 TP9
    306 TP9
    Документ2 страницы
    306 TP9
    Mohammed Rammeh
    Оценок пока нет
  • Examen 19 12 13
    Examen 19 12 13
    Документ3 страницы
    Examen 19 12 13
    Mohammed Rammeh
    Оценок пока нет
  • TD 1 Corrige
    TD 1 Corrige
    Документ4 страницы
    TD 1 Corrige
    Mohammed Rammeh
    Оценок пока нет
  • T DABR
    T DABR
    Документ5 страниц
    T DABR
    Mohammed Rammeh
    Оценок пока нет
  • Ex Arbre de Recherche
    Ex Arbre de Recherche
    Документ5 страниц
    Ex Arbre de Recherche
    Mohammed Rammeh
    Оценок пока нет
  • Elements
    Elements
    Документ484 страницы
    Elements
    Youcef Benjillali
    Оценок пока нет
  • Chapitre 4 Arbres Binaires de Recherche (ABR)
    Chapitre 4 Arbres Binaires de Recherche (ABR)
    Документ10 страниц
    Chapitre 4 Arbres Binaires de Recherche (ABR)
    kadidjaomar2002
    Оценок пока нет
  • Les Arbres Binaires de Recherche 1
    Les Arbres Binaires de Recherche 1
    Документ28 страниц
    Les Arbres Binaires de Recherche 1
    Mohamed Ben alaya
    Оценок пока нет
  • TD Algorithmique
    TD Algorithmique
    Документ11 страниц
    TD Algorithmique
    Kfrank
    Оценок пока нет
  • Serie Algo Arbre
    Serie Algo Arbre
    Документ13 страниц
    Serie Algo Arbre
    Seif Chelséwi Van Yedder
    Оценок пока нет
  • Arbres
    Arbres
    Документ29 страниц
    Arbres
    Djongang Darylle
    Оценок пока нет
  • ING STIC-Exercices - Structure de Donnée
    ING STIC-Exercices - Structure de Donnée
    Документ3 страницы
    ING STIC-Exercices - Structure de Donnée
    Yvan ravel Kassi
    Оценок пока нет
  • Decembre.09 Cor
    Decembre.09 Cor
    Документ8 страниц
    Decembre.09 Cor
    Best Offensive
    Оценок пока нет
  • Algorithmique Avancée Polycopie
    Algorithmique Avancée Polycopie
    Документ47 страниц
    Algorithmique Avancée Polycopie
    Soumia Dje
    Оценок пока нет
  • 2 Arbres Equilibres PDF
    2 Arbres Equilibres PDF
    Документ68 страниц
    2 Arbres Equilibres PDF
    Mohamed Baammi
    Оценок пока нет
  • Algo Les Arbres
    Algo Les Arbres
    Документ33 страницы
    Algo Les Arbres
    manel s
    100% (1)
  • 1 Arbre Binaire
    1 Arbre Binaire
    Документ2 страницы
    1 Arbre Binaire
    nerminekilani
    Оценок пока нет
  • Cours Arbres 1 2
    Cours Arbres 1 2
    Документ5 страниц
    Cours Arbres 1 2
    Freddy Roland
    Оценок пока нет
  • Correction TD Arbres Binaires Recherche ABR
    Correction TD Arbres Binaires Recherche ABR
    Документ4 страницы
    Correction TD Arbres Binaires Recherche ABR
    safe selmi
    Оценок пока нет
  • 1TD Arbre Binaire
    1TD Arbre Binaire
    Документ2 страницы
    1TD Arbre Binaire
    Lamia Brachemi
    Оценок пока нет
  • Arbres PDF
    Arbres PDF
    Документ11 страниц
    Arbres PDF
    MariamSi
    Оценок пока нет
  • Suitesurlesarbres 1
    Suitesurlesarbres 1
    Документ34 страницы
    Suitesurlesarbres 1
    Mohamed Soumeur
    Оценок пока нет
  • TD Arbres
    TD Arbres
    Документ2 страницы
    TD Arbres
    pttd
    Оценок пока нет
  • Cours TDA Arbin
    Cours TDA Arbin
    Документ88 страниц
    Cours TDA Arbin
    Hou Ssem
    Оценок пока нет
  • Arbre TD2022
    Arbre TD2022
    Документ3 страницы
    Arbre TD2022
    ahmed aboulkacem
    Оценок пока нет
  • Exercices D'algorithmique (Annales D'examens)
    Exercices D'algorithmique (Annales D'examens)
    Документ32 страницы
    Exercices D'algorithmique (Annales D'examens)
    RymaKemcha
    Оценок пока нет
  • Arbres Avl Et RB
    Arbres Avl Et RB
    Документ44 страницы
    Arbres Avl Et RB
    Layl Zan
    Оценок пока нет
  • Structures
    Structures
    Документ27 страниц
    Structures
    jean
    Оценок пока нет
  • Mp2i DS4
    Mp2i DS4
    Документ8 страниц
    Mp2i DS4
    mohamed mallekh
    Оценок пока нет
  • Tri Tas
    Tri Tas
    Документ5 страниц
    Tri Tas
    hafsa ladhasse
    Оценок пока нет
  • CCP MP 2008 Informatique Enonce
    CCP MP 2008 Informatique Enonce
    Документ20 страниц
    CCP MP 2008 Informatique Enonce
    Hamid BOUDERKA
    Оценок пока нет
  • Structure de Données en C - Seance 3 - Les Arbres
    Structure de Données en C - Seance 3 - Les Arbres
    Документ21 страница
    Structure de Données en C - Seance 3 - Les Arbres
    OUMAIMA BAHAFID
    Оценок пока нет
  • Chapitre 1 Arbres de Recherche
    Chapitre 1 Arbres de Recherche
    Документ127 страниц
    Chapitre 1 Arbres de Recherche
    Môh Mĕď
    Оценок пока нет
  • Janvier.12 Cor
    Janvier.12 Cor
    Документ8 страниц
    Janvier.12 Cor
    Best Offensive
    Оценок пока нет
  • Algo Part 2
    Algo Part 2
    Документ92 страницы
    Algo Part 2
    Bouchra Bouihi
    Оценок пока нет