Travaux Pratiques : arbres rouges-noirs - LAMSADE

Transcription

Travaux Pratiques : arbres rouges-noirs - LAMSADE
Algorithmique et application Java
Université Paris-Dauphine MIDO L2
Travaux Pratiques : arbres rouges-noirs
Rappels de cours Soit T un arbre binaire de recherche dont chaque élément est rouge ou
noir. Si T satisfait les propriétés suivantes alors c'est un arbre rouge-noir:
1) Si x ∈ T est rouge ses deux ls sont noirs;
2) La dénition suivante de la fonction hauteur noire hn(x) sur T est consistante:


si x n'a pas deux ls,
 1
hn(x) =
hn(y)
si x a un ls y rouge,

 hn(y) + 1 si x a un ls y noir.
Exercice
1
Gestion d'un arbre rouge-noir
Question 1.1
Ouvrez la page http://www.lamsade.dauphine.fr/galand/algo/tpArbRN.
Récupérez les chiers .java qui se trouvent à cette page dans un package que vous nommerez RougeNoir.
Question 1.2
La classe RougeNoir permet de représenter un arbre rouge-noir. Observez
les champs et les constructeurs de cette classe dans le chier RougeNoir.java.
Question
Les fonctions chercherMin() et chercherMax() déterminent l'élément
minimum et maximum respectivement dans un arbre rouge-noir. Ces fonctions retournent
null si l'arbre est vide. Implémentez ces fonctions dans la classe RougeNoir.
1.3
Question 1.4
La fonction hn() de la classe RougeNoir retourne la hauteur noire d'un
arbre rouge-noir. En vous appuyant sur la dénition de la fonction hn donnée ci-dessus,
implémentez la fonction hn() dans la classe RougeNoir.
Question 1.5 Le programme est maintenant prêt à être exécuté. Pour cela lancez l'exécution à partir de la classe Test. Une fenêtre s'ache alors. Vous pouvez construire un arbre
rouge-noir dans cette fenêtre en ajoutant les éléments un par un. Testez le programme en
créant un arbre rouge-noir. Que se passe-t'il si vous insérez deux fois le même élément ?
A quoi servent les boutons ajouter, oter, effacer, précédent et suivant de cette interface?
Testez le programme avec diérents arbres en vériant que ce sont bien des arbres rougenoirs.
Question 1.6
Les méthodes d'insertion et de suppression dans un arbre rouge-noir sont
implémentées dans la classe RougeNoir (méthodes ajouter et oter). A l'aide de l'interface et du code, essayez de comprendre les algorithmes d'insertion et de suppression d'un
élément dans un arbre rouge-noir.
2009-2010
1