Menu


1NSI

Les exercices python à connaître

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

Arbre binaire additif

On souhaite construire des arbres binaires parfaits « additifs ». Dans ces arbres :

  • tous les niveaux sont entièrement remplis ;
  • la valeur d'un nœud intérieur est toujours égale à la somme des valeurs de ses enfants.
Un exemple d'arbre binaire additif:
4exo4.png
Cet arbre est :
  • parfait (tous ses niveaux sont remplis) ;
  • 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 :

  • l'arbre vide est représenté par None,
  • un arbre non vide est représenté par un tuple (sous-arbre gauche, valeur, sous-arbre droit).
Ainsi le tuple ((None, 6, None), 15, None) représente l'arbre suivant :
4exo4.png

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.

source : https://codex.forge.apps.education.fr