Adloun

NSI (terminale) · Chapitre 3 · Application directe du cours

Problème — Affichage indenté et statistiques d'un arbre

Les arbres · niveau 2

Énoncé

Problème — Affichage indenté et statistiques d'un arbre.

On souhaite afficher un arbre binaire sous forme indentée (chaque niveau décalé de quelques espaces) et calculer simultanément sa taille, sa hauteur et son nombre de feuilles. Écrire les fonctions correspondantes et les tester sur un exemple.

Corrigé

Pour l'affichage indenté, on effectue un parcours en profondeur en passant un paramètre de profondeur qui détermine le décalage. On choisit d'afficher le sous-arbre droit en premier, ce qui donne, en tournant la tête, une représentation visuelle de l'arbre couché.


def afficher(arbre, profondeur=0):
    if arbre is None:
        return
    afficher(arbre.droit, profondeur + 1)
    print("    " * profondeur + str(arbre.valeur))
    afficher(arbre.gauche, profondeur + 1)

def statistiques(arbre):
    if arbre is None:
        return (0, -1, 0)             # (taille, hauteur, feuilles)
    if arbre.gauche is None and arbre.droit is None:
        return (1, 0, 1)              # feuille
    tg, hg, fg = statistiques(arbre.gauche)
    td, hd, fd = statistiques(arbre.droit)
    taille = 1 + tg + td
    hauteur = 1 + max(hg, hd)
    feuilles = fg + fd
    return (taille, hauteur, feuilles)

# Test :
racine = None
for v in [8, 3, 10, 1, 6, 14]:
    racine = inserer(racine, v)
afficher(racine)
print(statistiques(racine))          # (6, 2, 3)

La fonction statistiques calcule les trois grandeurs en un seul parcours , en combinant les résultats des sous-arbres. On évite ainsi de parcourir l'arbre trois fois séparément.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →