ABR
On utilise dans tous les exercices l'implémentation des arbres binaires à l'aide d'une classe ArbreBinaire. On pourra utiliser sans justification supplémentaires les méthodes gauche, droit, etiquette, est_vide de la classe ArbreBinaire, ainsi que la méthode inserer de la classe ABR.
1 | |
Question de cours¶
L'arbre binaire \(\mathcal{A}\) ci-dessous est-il un arbre binaire de recherche ? Justifier votre réponse à l'aide de deux arguments différents.

Le sous-arbre droit de \(\mathcal{A}\) n'est pas un arbre binaire de recherche. Il y a une étiquette d'un nœud du sous-arbre gauche de \(\mathcal{A}\) qui est supérieur à l'étiquette de la racine.
Tranche d'un ABR¶
-
Écrire une fonction
parcours_stocke_cles_entrequi prend en argument un ABRa, une listelainsi que deux entiersvminetvmaxet qui ajoute à la listelles élémentsedeacompris strictement entrevminetvmax.On effectuera un parcours en profondeur infixe de l'arbre
a.1 2 3 4 5 6 7 8
def parcours_stocke_cles_entre(a, l, vmin, vmax): if a.est_vide(): pass else: parcours_stocke_cles_entre(a.gauche(), l, vmin, vmax) if vmin < a.etiquette() < vmax: l.append(a.etiquette()) parcours_stocke_cles_entre(a.droit(), l, vmin, vmax) -
Quel affichage produit le code suivant ?
1 2 3 4 5 6
a = ABR() for e in [5, 7, 3, 4, 1, 2, 8, 4, 9]: a.inserer(e) l = [] print(parcours_stocke_cles_entre(a, l, 3, 6)) print(l)None [4, 4, 5]La ligne 6 affiche
None, la ligne 7 affiche[4, 4, 5]. -
On exécute à nouveau les deux dernières lignes du code précédent. Quel est l'affichage alors réalisé ?
L'avant dernière ligne affiche
None, la dernière ligne affiche[4, 4, 5, 4, 4, 5]
Arbre d'appel¶
On donne ci-dessous le code d'une fonction python m.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 | |
[$1$ [,phantom] [$9$ [$5$ [$4$ [$3$ [,phantom] [,phantom]] [,phantom]] [$6$ [,phantom] [$8$ [,phantom] [,phantom]]]] [$12$ [,phantom] [$42$ [,phantom] [,phantom]]]]]
Dresser l’arbre d’appel de l’instruction m(A, 8) où l’arbre \(\mathcal{A}\) est
l’arbre dont on a donné la représentation ci-dessous. En déduire la
valeur renvoyée par m(A, 8).

m(A, 8) |
1 | |
9