Vous êtes sur la page 1sur 2

Les arbres binaires (2/2)

TD8 Structures de données arborescentes – Spécialité NSI Terminale

Exercice 1. Parcours en profondeur🖉


On s’intéresse dans cet exercice à trois parcours en profondeur de
l’arbre représenté ci-contre.
Rappels. B
• Parcours prefixe : le père est visité avant les fils (gauche puis
droit).
• Parcours postfixe : les enfants (gauche puis droit) sont visités
avant le père.
• Parcours infixe : le fils gauche, le père puis le fils droit sont
visités dans cet ordre.

On s’intéresse à l’arbre représenté ci-contre.

1. Quelle est la taille de cet arbre ?


2. Quelle est sa hauteur ?
3. Dans quel ordre sont visités les nœuds lors du parcours prefixe ?

4. Même question pour le parcours postfixe.

5. Même question pour le parcours infixe.

Afin de vérifier vos réponses aux trois questions précédentes, cet arbre est implémenté en Python
dans le fichier TD08.py que vous trouverez dans votre cours sur Moodle.

6. Ajouter dans le fichier TD08.py une fonction récursive prefixe(a) qui reçoit un arbre en
paramètre et qui retourne une chaîne de caractères correspondant au parcours prefixe de l’arbre.
La chaîne renvoyée est-elle en accord avec votre réponse à la question 3 ?

7. Même question avec une fonction récursive postfixe(a) qui reçoit un arbre en paramètre et qui
retourne une chaîne de caractères correspondant au parcours postfixe de l’arbre.
La chaîne renvoyée est-elle en accord avec votre réponse à la question 4 ?

8. Même question avec une fonction récursive infixe(a) qui reçoit un arbre en paramètre et qui
retourne une chaîne de caractères correspondant au parcours infixe de l’arbre.
La chaîne renvoyée est-elle en accord avec votre réponse à la question 5 ?

9. Modifier cet arbre de manière à diminuer sa hauteur sans changer son parcours prefixe.

10. Représenter un arbre complet de 7 nœuds dont le parcours postfixe sera A B C D E F G.

11. Représenter un arbre complet de 7 nœuds dont le parcours infixe sera A B C D E F G.

Terminale NSI – TD08. Les arbres binaires (2/2) – p 1/2


Exercice 2. Parcours en largeur
Parcourir un arbre en largeur, c’est l’explorer niveau par niveau.
Exemple. Parcours en largeur de l’arbre de l’exercice 1 : A B C D E F G H I J

Méthode itérative avec une file


• Si l’arbre n’est pas vide, on place l’arbre dans la file.
• Tant que la file n’est pas vide, on affiche la valeur de la racine du premier arbre de la file, on le
retire et on ajoute ses deux sous-arbres dans la file.

pseudo-code
ParcoursLargeur(arbre)
Initialiser une chaîne de caractères vide
Créer une file d'attente vide "file"
Ajouter l’arbre dans la file
Tant que la file n’est pas vide :
Ajouter le valeur de la racine à la chaîne de caractères
Si le sous-arbre gauche du premier élément de la file existe :
Le Mettre en file d'attente
Si le sous-arbre droit du premier élément de la file existe :
Le Mettre en file d'attente
Supprimer le 1er élément de la file
Renvoyer la chaîne de caractères

1. Lister les états successifs de la liste et de la chaîne de caractères.


2. Compléter le fichier TD08.py d’une fonction ParcoursLargeur(arbre) et tester le bon
fonctionnement sur l’arbre implémenté.
>>> ParcoursLargeur(arbre)
'ABCDEFGHIJ'

Méthode récursive
Deux fonctions dans cette méthode :
• AfficheNiveau affiche tous les nœuds à un niveau donné.
• ParcoursLargeur parcourt l’arbre en largeur. Cette fonction utilise AfficheNiveau pour afficher
un à un les nœuds à tous les niveaux, à partir de la racine.

pseudo-code
ParcoursLargR(arbre)
Pour n = 1 à hauteur(arbre)
AfficheNiveau(arbre, n);
AfficheNiveau(arbre, niveau)
SI arbre n’existe pas ALORS retourne;
SI niveau = 1 ALORS ECRIRE(arbre.valeur)
SINON SI niveau > 1 ALORS
AfficheNiveau(arbre→gauche, niveau-1)
AfficheNiveau(arbre→droit, niveau-1)

4. Étudier et expliquer le fonctionnement de cet algorithme.


5. Compléter le code du fichier TD08.py avec les deux fonctions ParcoursLargeur(arbre) et
AfficheNiveau(noeud, niveau) et tester le bon fonctionnement.

>>> ParcoursLargR(arbre)
ABCDEFGHIJ

Terminale NSI – TD08. Les arbres binaires (2/2) – p 2/2

Vous aimerez peut-être aussi