programme de première | |
---|---|
E1 : | listes |
E2 : | listes |
E3 : | listes |
E4 : | tri par insertion |
E5 : | tri par séléction |
E6 : | dictionnaires / string |
E7 : | tuple |
E8 : | boucle / booléen / liste |
E9 : | string |
E10 : | dictionnaire / fonctions |
E11 : | booléens / listes |
récursivité | |
---|---|
E1 : | somme d'entiers |
E2 : | chiffres romains |
E3 : | factorielle |
E4 : | rendu de monnaie |
POO | |
---|---|
E1 : | la classe Chien |
E2 : | carrés semi-magiques |
E3 : | filtre sur une pile |
E4 : | durées en POO |
Arbres | |
---|---|
E1: | Hauteur et taille d'un arbre |
E2: | parcours 1 |
E3: | parcours 2 |
E4: | Recherche dans un ABR |
E5: | Arbre binaire additif |
E6: | Arbre binaire de recherche |
Diviser pour régner | |
---|---|
E1 : | sommet d'un tableau |
E2 : | Indice d'une panne |
E3 : | calcul d'une puissance |
Sécurisation des communications | |
---|---|
E1 : | code César |
E2 : | Vigenre |
On souhaite construire des arbres binaires parfaits « additifs ». Dans ces arbres :
additif (on a 3 + 5 = 8 ; 7 + 4 = 11 ; 8 + 11 = 19).
Représentation des arbres en machine:
On représente les arbres binaires ainsi :
None
,(sous-arbre gauche, valeur, sous-arbre droit)
.((None, 6, None), 15, None)
représente l'arbre suivant :
On demande de compléter la fonction arbre_additif
qui prend en argument la liste valeurs
contenant les valeurs des feuilles et renvoie l'arbre correspondant représenté à l'aide de tuples.
On garantit que le nombre d'éléments de valeurs
est une puissance de 2 strictement positive. Ces éléments sont tous des nombres entiers.
Exemples :
>>> arbre_additif([6])
(None, 6, None)
>>> arbre_additif([6, 9])
((None, 6, None), 15, (None, 9, None))
>>> arbre_additif([3, 5, 7, 4])
(((None, 3, None), 8, (None, 5, None)), 19, ((None, 7, None), 11, (None, 4, None)))
On commence en construisant une liste contenant les feuilles. On calcule ensuite la liste contenant les nœuds du niveau supérieur.
Ce calcul effectué, on remplace la liste des nœuds par la nouvelle et on répète la démarche jusqu'à atteindre la racine.