algorithmique (école d'ingénieur) · Chapitre 13 · Exercice de TD
Taille, hauteur et feuilles d'un arbre binaire
Diviser pour régner · niveau 1 (application)
Énoncé
Avec la classe AB du cours, écrire trois fonctions récursives :
int taille(AB a), le nombre de valeurs de ;int h(AB a), sa hauteur, avec la convention ;int feuilles(AB a), son nombre de feuilles.
Donner leur complexité. Tester sur .
Corrigé
Chaque fonction applique la même décomposition : un arbre vide, ou une racine et deux sous-arbres.
static int taille(AB a) {
if (vide(a)) return 0;
return 1 + taille(sag(a)) + taille(sad(a));
}
static int h(AB a) {
if (vide(a)) return -1;
return 1 + Math.max(h(sag(a)), h(sad(a)));
}
static int feuilles(AB a) {
if (vide(a)) return 0;
if (vide(sag(a)) && vide(sad(a))) return 1; // a est une feuille
return feuilles(sag(a)) + feuilles(sad(a));
}
a : taille 3, h 1, feuilles 2
b : taille 9, h 3, feuilles 5
() : taille 0, h -1, feuilles 0
( est l'arbre de racine du cours.) Chaque nœud donne lieu à un appel, et chaque arbre vide aussi ; un arbre de valeurs a sous-arbres vides. Le corps de chaque fonction est en temps constant : .
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.