Logo de kxs.frCours d'informatique pour le lycée et la prépa

Implémentation des arbres

Comme pour les listes, il est possible d'implémenter un arbre de plusieurs façons.

Programmation orientée objet

Voici l'implémentation d'un arbre utilisant la programmation orienté objet :

class ArbreBinaire:
    def __init__(self, valeur, gauche = None, droit = None):
        self.valeur = valeur  # Étiquette
        self.gauche = gauche  # Sous-arbre gauche
        self.droit = droit    # Sous-arbre droit

1) Recréez l'arbre suivant en utilisant cette implémentation.

2) Proposez et testez une méthode récursive permettant de calculer la taille de l'arbre.

3) Proposez et testez une méthode récursive permettant de calculer la hauteur de l'arbre.

4) Proposez et testez une méthode récursive permettant de faire le parcours préfixe de l'arbre.

5) Proposez et testez une méthode récursive permettant de faire le parcours infixe de l'arbre.

6) Proposez et testez une méthode récursive permettant de faire le parcours suffixe de l'arbre.

7) Proposez et testez une méthode non récursive permettant de faire le parcours en largeur de l'arbre.

Utilisation de tuples

Il n'est pas nécessaire d'utiliser la programmation orientée objet pour implémentter un arbre, on peut simplement utiliser des tuples ou des tableaux. Ainsi, on pourra utiliser des tuples de trois éléments représentant la valeur du nœud, sont sous-arbre gauche et son sous-arbre droit :

noeud = (valeur, arbre.gauche, arbre.droit)

Ainsi, pour représenter cet arbre :

Nous utiliserons le code suivant :

arbre = ('A', ('B', None, None), ('C', None, None))

Vous allez maintenant recréer les algorithmes précedents avec cette implémentation.

8) Recréez l'arbre suivant en utilisant cette implémentation.

9) Proposez et testez une méthode récursive permettant de calculer la taille de l'arbre.

10) Proposez et testez une méthode récursive permettant de calculer la hauteur de l'arbre.

11) Proposez et testez une méthode récursive permettant de faire le parcours préfixe de l'arbre.

12) Proposez et testez une méthode récursive permettant de faire le parcours infixe de l'arbre.

13) Proposez et testez une méthode récursive permettant de faire le parcours suffixe de l'arbre.

14) Proposez et testez une méthode non récursive permettant de faire le parcours en largeur de l'arbre.