Vous êtes sur la page 1sur 4

Exercice 4

Un arbre ordonné ou arbre binaire de recherche (ABR) peut être défini récursivement de la manière
suivante :
A est un ABR si
 A est l’arbre vide
 A est l’arbre <A1, x, A2> tel que A1 et A2 sont des ABR et tout nœud de A1 est inférieur
strictement à x et tout nœud de A2 est supérieur strictement à x
Ecrivez un algorithme qui permet de construire un ABR B à partir d’un arbre binaire A quelconque.
Résolution :
L’exercice doit être résolu à la manière de la création d’un arbre binaire de recherche avec la différence que c’est
le programme principal qui lit les valeurs à introduire dans l’arbre dans une boucle dans notre exercice on ne lit
pas les valeurs au clavier nous les lisons dans un arbre préexistant A que nous versons dans B. A cet effet nous
devons choisir un type des trois parcours disponibles. Choisissons le préfixé.
Rappel algorithme du cours :
Type
arbre = ^noeud
noeud = Enregistrement
val : entier
gauche : arbre
droit : arbre
Fin
Variables
Racine : arbre
val :entier
Procédure CréerABR(Var B:arbre; elt :entier)
Début
Si B=NIL alors
allouer(B)
B^.valelt
B^.gaucheNIL
B^.droit NIL
sinon
si (elt<B^.val) alors
CréerABR (B^.gauche,elt)
sinon
si (elt > B^.val) alors
CréerABR (B^.droit,elt)
finsi
finsi
finsi
Fin

Début {PP}
racineNIL
Ecrire(" Entrez un entier: ") lire(val)
TantQue v≠ 0 faire (*on arrête à l’introduction d’un zéro*)
CréerABR (racine,val)
Ecrire(" Entrez un entier: ") lire(val)
FinTantQue
Fin

Proposition de solution Exercice création d’un ABR à partir d’un arbre quelconque
(*B = arbre binaire de recherche
A = L’arbre binaire quelconque *)

Procédure ConvertirABAversABRB(A : arbre ;Var B:arbre)


Début
Si A # NIL alors
CréerABR(B, A^.val) Nous avons prix le choix de traiter en préfixé
le parcours de l’arbre quelconque A.
ConvertirABAversABRB (A^.gauche,B) De toutes les façons la procédure
ConvertirABRAversABRB (A^.doit,B) CréerABR(B, A^.val) se chargera de placer
FinSi un nœud lu dans l’arbre A dans sa bonne
Fin place dans l’arbre B
A l’image d’un parcours en préfixé.
Rappel parcours préfixé :
Procédure parcourir(A: arbre)
Début
Si A ≠ NIL alors
EXPLOITER(A^.val);
Parcourir(A^.gauche)
Parcourir(A^.doit)
FinSi
Fin

Corrigé Exercice 1 Examen juin 2022


EXERCICE 1 : ARBRE BINAIRE [6,5 POINTS]
On vous donne la liste des nœuds en ordres préfixé et infixé d’un même arbre binaire de caractères, et on vous
demande de faire la représentation graphique de cet arbre (expliquer comment peut-on identifier les nœuds du
sous-arbre droit).
Liste des nœuds selon le parcours préfixé (RGD) : g b d i m h j n e c a k f l
Liste des nœuds selon le parcours infixé (GRD) : i d m b j h n g a c e f k l

Résolution
Voici les listes de nœuds que fournies :
Parcours préfixé (RGD) : g b d i m h j n e c a k f l
Parcours infixé (GRD) : i d m b j h n g a c e f k l

Pour représenter graphiquement l'arbre binaire, nous pouvons utiliser l'approche de construction
récursive. Voici les étapes à suivre :
1. Trouver la racine de l'arbre : La première valeur dans la liste de parcours préfixé (RGD) est la
racine de l'arbre. Dans ce cas, la racine est "g".
2. Diviser la liste de parcours infixé (GRD) : Trouvez la position de la racine dans la liste de parcours
infixé (GRD). Les éléments situés à gauche de cette position correspondent aux nœuds du sous-
arbre gauche, et les éléments situés à droite correspondent aux nœuds du sous-arbre droit. Dans
notre cas, la racine "g" se trouve à la position 6 dans la liste de parcours infixé (GRD). Donc, les
nœuds du sous-arbre gauche sont "i d m b j h n", et les nœuds du sous-arbre droit sont "a c e f k
l".
g

i d m b j h n a c e f k l

3. Répéter les étapes 1 et 2 pour chaque sous-arbre : Appliquez les mêmes étapes pour les sous-
arbres gauche et droit récursivement jusqu'à ce que tous les nœuds soient traités.

Dans cet arbre, "g" est la racine. Le sous-arbre gauche est composé de "i d m b j h n", et le sous-
arbre droit est composé de "a c e f k l".

Tour 2

b e

i d m j h n ac fkl

Tour 3
Parcours préfixé (RGD) : g b d i m h j n e c a k f l
Parcours infixé (GRD) : i d m b j h n g a c e f k l

b e

d h k
a

i m j n f l
c

Vous aimerez peut-être aussi