Q1a
Nombre de nœuds = 7 (taille max pour une hauteur h : 2h – 1 = 1).
Q1b
profondeur maximale du nœud racine = 4
NB : par convention, ici un arbre réduit à un seul nœud est de hauteur 1
Q2
Taille : 7
Hauteur : 3 (par convention h(Δ) = 1)

Q3
Taille : 7
Hauteur : 4

Q4
def hauteur(self):
return self.racine.hauteur()
Q5
def taille(self) -> int:
if self.gauche == None and self.droite == None:
return 1
elif self.gauche == None:
return 1 + self.droite.taille()
elif self.droite == None:
return 1 + self.gauche.taille()
else:
return 1 + self.gauche.taille() + self.droite.taille()
def taille(self):
return self.racine.taille()
Q6a
2(h-1) – 1 < taille ≤ 2h – 1
doù t_min = 2(h-1) – 1
Q6b
def bien_construit(self) -> bool:
return 2**(self.racine.hauteur() - 1) - 1 < self.racine.taille() <= 2**self.racine.hauteur() - 1