L3 MIASHS, Algorithme et Programmation 3, année 2022

Ceci est un DM facultatif.

La date de rendu est le 16 décembre.

L’objectif est d’implémenter une structure de donnée MutableMapping via un arbre binaire équilibré.

Arbre simple

  1. Créer une classe Noeud tel que:

Si les deux fils d’un noeud sont None, on dit que le noeud est une feuille.

  1. Créer une classe Arbre qui surcharge MutableSet et qui:

La profondeur d’un arbre est définit ainsi:

Arbre monotone

  1. Un Arbre est dit monotone si:

Le hash d’une valeur se calcul hash(value).

Surcharger la classe Arbre en une classe ArbreMonotone

Écrire des propriétés:

Faites en sorte que la méthode add préserve la propriété monotone.

  1. Surcharger __contains__ pour réaliser une implémentation en O(d) où d est la profondeur de l’abre.

  2. Trouver des exemples de taille arbitraire d’ArbreMonotone où la taille de l’arbre et sa profondeur sont égale.

Arbre monotone équilibrés

Lire la page wikipedia sur les rotations dans les arbres binaires de recherche

Un arbre est dit équilibré si l’arbre gauche et l’arbre droit ont le même nombre de noeud (plus ou moins un noeud).

  1. Surcharger la classe ArbreMonotone en une classe ArbreEquilibre en ajoutant des opérations de RotationGauche et RotationDroite en place.

Ajouter une méthode RotationDroite et RotationGauche qui modifie en place l’arbre après ces opérations.

  1. Surcharger l’opération add et l’opération discard pour garantir que votre arbre est toujours équilibré

  2. Faites une analyse de complexité de votre structure de données


Compiled the: dim. 07 janv. 2024 23:19:07 CET