Lycée   >   Terminale   >   NSI   >   Utiliser Python pour déterminer les mesures des arbres binaires

Utiliser Python pour déterminer les mesures des arbres binaires

  • Fiche de cours
  • Quiz
  • Profs en ligne
Objectifs
  • Utiliser Python pour déterminer la taille d’un arbre binaire.
  • Utiliser Python pour déterminer la hauteur d’un arbre binaire.
Points clés
  • La taille et la hauteur d’un arbre binaire se calculent récursivement.
  • La taille et la hauteur d’un arbre binaire vide valent 0.
  • La taille d’un arbre binaire non vide vaut :
    1 + taille(sous-arbre gauche) + taille(sous-arbre droit).
  • La hauteur d’un arbre binaire non vide vaut :
    1 + max(hauteur(sous-arbre gauche), hauteur(sous-arbre droit)).
Pour bien comprendre
  • Comprendre la structure hiérarchique et le vocabulaire des arbres binaires.
  • Étudier et implémenter un arbre binaire.
  • Utiliser la récursivité en Python.
1. La taille d'un arbre binaire
a. Définition d'un arbre binaire (rappel)
Un arbre binaire est un arbre dont les nœuds ont au plus deux fils. On parle alors de fils gauche et de fils droit. Dans le cas où un nœud a un seul fils, on parle indifféremment de fils gauche ou de fils droit.
b. Principe
La taille d’un arbre binaire est son nombre de nœuds.

Pour la calculer, on peut utiliser la représentation récursive des arbres binaires.

En effet, un arbre binaire a est :
  • soit vide : sa taille sera égale à 0.
  • soit non vide : dans ce cas, a sera composé de sa racine, de son sous-arbre gauche et de son sous-arbre droit.
    Sa taille sera donc :
    + taille(sous-arbre gauche) + taille(sous-arbre droit)
c. Algorithme

Voici ci-dessous un algorithme de la fonction récursive de calcul de la taille d’un arbre binaire a.

Algorithme Explication
Fonction taille(AB a): On définit la fonction taille qui prend pour paramètre un arbre binaire a de type AB (arbre binaire).
    Si est_vide(a), alors
        retourner 0
Si a est vide, on retourne 0.
    Sinon,
        retourner 1 + taille(sag(a)) 
        + taille(sad(a))
Sinon on retourne la somme de 1 (racine), de la taille de son sous-arbre gauche et de la taille de son sous-arbre droit.
    FinSi Fin de l’instruction conditionnelle

est_vide(a) vaut ici Vrai si a est vide et Faux sinon.

sag(a) représente le sous-arbre gauche de a et sad(a) représente son sous-arbre droit.

d. Programmation

En Python, la fonction taille(arbre) implémente le calcul de la taille de l’arbre arbre.      

Python Explication
def taille(arbre): On définit la fonction taille.
    if arbre.est_vide(): Si l’arbre est vide,
        return 0 retourner 0,
    else: Sinon
        return 1 + taille(arbre.sag)
        +
 taille(arbre.sad)
retourner la somme de 1, de la taille de son sous-arbre gauche et de la taille de son sous-arbre droit.
Exemple
On considère l’arbre binaire suivant.

Voici l'exécution du code précédent sur Python Tutor.

taille(a) renvoie bien 6 (il y a 6 nœuds).

2. La hauteur d'un arbre binaire
a. Principe
La hauteur d’un arbre binaire (ou profondeur) est le nombre de niveaux qu’il contient.

Pour la calculer, on utilise la représentation récursive des arbres binaires.

En effet, un arbre binaire a est :
  • soit vide : sa hauteur sera égale à 0 ;
  • soit non vide : dans ce cas, la racine de a correspond à 1 niveau. Il suffit ensuite d’ajouter le maximum de la hauteur de ses sous-arbres.
    Sa hauteur sera donc :

    1 + max(hauteur(sous-arbre gauche), hauteur(sous-arbre droit))
b. Algorithme

Voici ci-dessous un algorithme de la fonction récursive du calcul de la hauteur d’un arbre binaire a.

Algorithme Explication
Fonction hauteur(AB a) : On définit la fonction hauteur qui prend pour paramètre un arbre binaire a de type AB (arbre binaire).
    Si est_vide(a), alors
        retourner 0
Si a est vide, on retourne 0.
    Sinon,
        retourner 1
 
        + max(hauteur(sag(a)),
        hauteur(sad(a)))
Sinon on retourne la somme de 1 (racine) et du maximum de la hauteur de son sous-arbre gauche et de la hauteur de son sous-arbre droit.
    FinSi Fin de l’instruction conditionnelle
c. Programmation

En Python, la fonction hauteur(arbre) implémente le calcul de la taille de l’arbre arbre.

Python Explication
def hauteur(arbre): On définit la fonction hauteur
    if arbre.est_vide(): Si l’arbre est vide,
        return 0 retourner 0,
    else: Sinon
       return 1 
       + max(hauteur(arbre.sag),
       hauteur(arbre.sad))
retourner la somme de 1 et du maximum de la hauteur de son sous-arbre gauche et de la hauteur de son sous-arbre droit.
Exemple
On considère l’arbre binaire suivant.

Voici l'exécution du code précédent sur Python Tutor.

hauteur(a) renvoie bien 4 (il y a 4 niveaux).

d. Mesures (rappels)
Un arbre complet de hauteur h aura 2h – 1 feuilles (nœuds qui ne sont pères d’aucun autre nœud).
Sa taille sera 2h  1.
La taille d’un arbre binaire de hauteur h est comprise entre h (arbre dont chaque nœud a un seul fils) et 2h  1 (arbre complet).
Exemple
On étudie l’arbre binaire suivant.

  • La hauteur de cet arbre complet est h = 3 et il a bien :
    2h 1 = 23  1 = 4 feuilles.
  • La taille de cet arbre est bien 2h – 1 = 23  1 = 7.

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Recevez l'intégralité des bonnes réponses ainsi que les rappels de cours associés :

Votre adresse e-mail sera exclusivement utilisée pour vous envoyer notre newsletter. Vous pourrez vous désinscrire à tout moment, à travers le lien de désinscription présent dans chaque newsletter. Pour en savoir plus sur la gestion de vos données personnelles et pour exercer vos droits, vous pouvez consulter notre charte.

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

Fiches de cours les plus recherchées

NSI

Utiliser Python dans les arbres binaires de recherche

NSI

Rechercher et insérer une clé dans un arbre binaire de recherche

NSI

Parcourir un arbre binaire

NSI

Se déplacer dans un graphe

NSI

Utiliser la méthode « diviser pour régner »

NSI

Programmer de manière dynamique

NSI

Étudier la complexité mémorielle

NSI

Rechercher un motif dans un texte : l'algorithme de Boyer-Moore

NSI

Comprendre les requêtes HTTP et la réponse serveur

NSI

Comprendre la notion de réseau et de protocole

NSI

Comprendre les protocoles de la couche physique

NSI

Comprendre les protocoles de la couche liaison dans un réseau local

NSI

Comprendre les protocoles de la couche réseau

NSI

Comprendre les protocoles de la couche transport

NSI

Décrire des protocoles de récupération de paquets

NSI

Affecter une valeur, utiliser une séquence d'actions

NSI

Utiliser des structures conditionnelles

NSI

Utiliser des boucles