TreeContent<E> + classe container Tree<E> pour les méthodesDéfinir la paire TreeContent<E> / Tree<E> pour un arbre binaire générique, et implémenter la méthode size().
class TreeContent<E> avec les champs E value, TreeContent<E> left, TreeContent<E> right et le constructeur.class Tree<E> avec un champ TreeContent<E> content ; content == null = arbre vide.size(), depth(), value()…) sur le container en testant this.content == null pour le cas arbre vide.Définir la paire TreeContent<E> / Tree<E> pour un arbre binaire générique, et implémenter la méthode size().
Définir TreeContent<E>, la classe récursive interne de stockage :
class TreeContent<E> {
E value;
TreeContent<E> left;
TreeContent<E> right;
TreeContent(E v, TreeContent<E> l, TreeContent<E> r) {
value = v;
left = l;
right = r;
}
}
Définir le container Tree<E> avec son champ content et ses constructeurs :
class Tree<E> {
TreeContent<E> content;
Tree() { content = null; } // arbre vide
Tree(E v, Tree<E> l, Tree<E> r) {
content = new TreeContent<E>(v, l.content, r.content);
}
Tree(TreeContent<E> c) { content = c; } // usage interne
}
Implémenter size() sur le container en testant this.content == null pour l'arbre vide :
int size() {
if (this.content == null) return 0; // arbre vide
Tree<E> left = new Tree<E>(content.left);
Tree<E> right = new Tree<E>(content.right);
return 1 + left.size() + right.size();
}
// Test : arbre vide -> 0, feuille -> 1, arbre [1, [2], [3]] -> 3
Le pattern container s'applique aux arbres exactement comme aux listes : TreeContent<E> stocke, Tree<E> porte les méthodes, et this.content == null détecte l'arbre vide.
Les applications suivantes et la correction guidée sont réservées aux membres Premium
La méthode et sa première application corrigée restent en accès libre. Le Premium débloque les applications suivantes, l'aide IA et le suivi de ta maîtrise.