Arbres binaires
On pourra utiliser sans justification supplémentaire les fonctions vues en tp suivantes : est_vide
, est_feuille
, etiquette
, gauche
, droit
. Afin d'illustrer les résultats attendus pour chaque exercice, on donne ci-dessous quatre arbres \(\mathcal{A}_1\), \(\mathcal{A}_2\), \(\mathcal{A}_3\), \(\mathcal{A}_{4}\).
Arbre parfait¶
Un arbre binaire est dit parfait lorsque toutes les feuilles sont à la même profondeur de la racine. Il s'agit d'un arbre dont tous les niveaux sont remplis : tous les noeuds internes ont deux enfants.
On considère dans cet exercice que l'arbre vide est un arbre parfait. Par exemple, l'arbre \(\mathcal{A}_1\) est parfait, les autres arbres ne le sont pas.
Compléter le code de la fonction python est_parfait
afin que celle-ci renvoie True
si et seulement si l'arbre binaire a
(éventuellement vide) est parfait.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Peigne¶
On dit d'un arbre binaire qu'il est un peigne lorsqu'il ne possède qu'une unique feuille. Il s'agit d'un arbre possédant un seul nœud par niveau : tous les nœuds internes ne possèdent qu'un enfant.
On considère dans cet exercice que l'arbre vide est un peigne. Par exemple, l'arbre \(\mathcal{A}_3\) est un peigne, les autres arbres ne le sont pas.
Compléter le code de la fonction python est_peigne
afin que celle-ci renvoie True
si et seulement si l'arbre binaire a
(éventuellement vide) est un peigne.
1 2 3 4 5 6 7 |
|
Nombre de feuilles d'un arbre¶
Écrire une fonction python nb_feuilles
qui étant donné un arbre a
(supposé non vide) compte le nombre de feuilles de l'arbre a
.
Par exemple, \(\mathcal{A}_1\) possède quatre feuilles, \(\mathcal{A}_2\) possède trois feuilles, \(\mathcal{A}_3\) possède une feuille et \(\mathcal{A}_4\) possède deux feuilles.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Parcours d'arbre¶
-
Donner la liste des étiquettes de \(\mathcal{A}_1\) lorsque celui-ci est parcouru en profondeur d'abord, dans l'ordre préfixe.
0 -5 -3 1 4 -3 5
-
Donner la liste des étiquettes de \(\mathcal{A}_2\) lorsque celui-ci est parcouru en profondeur d'abord, dans l'ordre infixe.
4 -2 -3 5 -1 -1 6 -5
-
Donner la liste des étiquettes de \(\mathcal{A}_4\) lorsque celui-ci est parcouru en profondeur d'abord, dans l'ordre postfixe.
-5 -3 -2 6 8 -4 5