OCaml (option informatique) · Chapitre 7 · Exercice de TD
Taille d'un arbre général
Enregistrements et types mutuellement récursifs · niveau 3 (difficile)
Énoncé
Avec les types mutuellement récursifs arbre / foret, écrire taille_arbre (nombre de nœuds).
Corrigé
let rec taille_arbre a =
match a with
| Noeud (_, f) -> 1 + taille_foret f
and taille_foret f =
match f with
| [] -> 0
| a :: reste -> taille_arbre a + taille_foret reste
Deux fonctions mutuellement récursives, à l'image des deux types : taille_arbre compte pour le nœud plus la taille de sa forêt ; taille_foret parcourt la liste des sous-arbres. La feuille Noeud (x, []) a pour taille 1 + 0 = 1.
Exercices semblables
- Compte bancaire corrigé
- Champ de type liste corrigé
- Mise à jour fonctionnelle corrigé
- Hauteur d'un arbre général corrigé
- Un système de fichiers corrigé