Algorithmique Avancée TP3 - Arbres Binaires de Recherche: 1 Représentation D'un Noeud
Algorithmique Avancée TP3 - Arbres Binaires de Recherche: 1 Représentation D'un Noeud
Algorithmique Avancée TP3 - Arbres Binaires de Recherche: 1 Représentation D'un Noeud
13
3 17
1 6 14 19
4 10 16
11
1
2 Représentation d’un arbre binaire de recherche
Écrivez la classe ArbreRecherche qui représentera tous les éléments (sommets) d’un
arbre. Pour cela, elle disposera d’une référence vers la racine de l’arbre (premier
élément de celui-ci). Ensuite, créez un arbre binaire de recherche contenant un noeud
racine 13, un fils gauche 3, et un fils droit 17 (comme sur l’exemple précédent). Pensez
au(x) constructeur(s), getter(s) et setter(s) et n’oubliez pas d’initialiser les attributs.
class ArbreRecherche {
// ...
}
3 Ajouter un noeud
Écrivez la méthode ajouter à la classe ArbreRecherche qui permet d’ajouter un
noeud ayant la clef v au bon endroit dans l’arbre. Écrivez une deuxième méthode
ajouter faisant la même opération mais depuis un objet de type Noeud passé en
paramètre.
public void ajouter(int v);
public void ajouter(Noeud n);
Exemple :
Noeud racine = new Noeud(12);
ArbreRecherche abr = new ArbreRecherche(racine);
arbre.ajouter(45);
arbre.ajouter(12);
arbre.ajouter(5);
arbre.ajouter(22);
Noeud n = new Noeud(99);
arbre.ajouter(n);
4 Maximum
Écrivez la méthode maximum qui retourne la plus grande valeur contenue dans
l’arbre. Si l’arbre est vide, retournez la valeur 42.
2
public int maximum();
Exemple :
Noeud racine = new Noeud(55);
ArbreRecherche abr = new ArbreRecherche(racine);
arbre.ajouter(11);
arbre.ajouter(67);
arbre.ajouter(88);
arbre.ajouter(55);
arbre.ajouter(44);
5 Minimum
Écrivez la méthode minimum qui retourne la plus petite valeur contenue dans l’arbre.
Si l’arbre est vide, retournez la valeur −42.
public int minimum();
Exemple :
Noeud racine = new Noeud(33);
ArbreRecherche abr = new ArbreRecherche(racine);
arbre.ajouter(5);
arbre.ajouter(44);
arbre.ajouter(-2);
arbre.ajouter(3);
arbre.ajouter(12);
6 Rechercher un noeud
Écrivez la fonction rechercher qui étant donné un entier v, recherche si il existe un
noeud ayant cette clef dans l’arbre. Cette fonction retourne le noeud trouvé ou null
si celui-ci n’existe pas.
public Noeud rechercher(int v);
Exemple :
Noeud racine = new Noeud(12);
ArbreRecherche abr = new ArbreRecherche(racine);
arbre.ajouter(45);
arbre.ajouter(12);
3
arbre.ajouter(5);
arbre.ajouter(22);
arbre.ajouter(99);
Noeud n = arbre.rechercher(13);
if (n == null) {
System.out.println("Aucun element de l’arbre n’a une clef egal a
13");
} else {
System.out.println("Le noeud 13 a ete trouve !");
}
/* Resultat attendu:
Aucun element de l’arbre n’a une clef egal a 13
*/
Noeud n = arbre.rechercher(99);
if (n == null) {
System.out.println("Aucun element de l’arbre n’a une clef egal a
99");
} else {
System.out.println("Le noeud 99 a ete trouve !");
}
/* Resultat attendu:
Le noeud 99 a ete trouve !
*/
7 Supprimer un noeud
Écrivez la méthode supprimer qui étant donné un entier v, supprime l’élément ayant
la même clef (si il existe) dans l’arbre.
static void supprimer(int v);
Exemple :
// A partir de l’arbre cree a l’exercice precedent.
Noeud racine = new Noeud(12);
ArbreRecherche abr = new ArbreRecherche(racine);
abr.ajouter(5);
abr.ajouter(25);
abr.ajouter(3);
abr.ajouter(7);
abr.ajouter(-1);
abr.ajouter(4);
abr.ajouter(8);
abr.ajouter(22);
abr.ajouter(55);
abr.ajouter(14);
abr.ajouter(44);
abr.ajouter(99);
abr.ajouter(15);
abr.supprimer(3);
/* Resultat attendu:
12
.
|G__ 5
4
|.....|G__ 4
|...........|G__ -1
|.....|D__ 7
|...........|D__ 8
|D__ 25
|.....|G__ 22
|...........|G__ 14
|.................|D__ 15
|.....|D__ 55
|...........|G__ 44
|...........|D__ 99
*/
8 Afficher un arbre
Surchargez la méthode toString retournant la représentation de l’arbre sous forme
de chaîne de caractères.
public String toString();
Exemple :
Noeud racine = new Noeud(12);
ArbreRecherche abr = new ArbreRecherche(racine);
arbre.ajouter(5);
arbre.ajouter(25);
arbre.ajouter(3);
arbre.ajouter(7);
arbre.ajouter(-1);
arbre.ajouter(4);
arbre.ajouter(8);
arbre.ajouter(22);
arbre.ajouter(55);
arbre.ajouter(14);
arbre.ajouter(44);
arbre.ajouter(99);
System.out.println(arbre);
/* Resultat attendu:
12
.
|G__ 5
|.....|G__ 3
|...........|G__ -1
|...........|D__ 4
|.....|D__ 7
|...........|D__ 8
|D__ 25
|.....|G__ 22
|...........|G__ 14
|.....|D__ 55
|...........|G__ 44
|...........|D__ 99
*/