Itérateur sur un arbre binaire de recherche

delfre56 Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je dois écrire une classe pour itérer sur un arbre binaire de recherche. J'ai déjà créé un classe BinarySearchTreeNode<E>, qui représente les nœuds de l'arbre. Cette classe contient un méthode isLeaf(), qui détermine si le nœud est une feuille (sans enfant donc), et je m'en suis servit pour le hasNext. Maintenant, je dois écrire le next, et je ne vois pas trop ce que je dois renvoyer : fils de droite ? De gauche ? Comment choisir ?

Merci pour vos réponses :)
A voir également:

2 réponses

Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Salut,

Il me semble que next renvois la valeur qui suit donc je ne pense pas que c'est ce que tu veuille non?
0
delfre56 Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   48
 
Justement, c'est le but de ma question : quelle valeur est considérée comme celle "qui suit" ? Celle contenue dans le fils droit ou celle du gauche?
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Par exemple tu as un HashSet qui possède 10 cases.
Si tu travailles sur la 1ère case et que tu dis next, tu travaillera sur une donnée de la 2ème case (à vérifier quand même je ne suis pas un expert).

Pour ce que tu veux faire, pourquoi ne pas déclarer 2 entité? Une pour la droite, une pour la gauche et une entité contenant uniquement 1 bit qui en fonction de son état te fera allé à droite ou à gauche?

Si tu fais ce que je viens de dire, il faudra que tu utilises un HashMap (je ne sais pas si c'est comme ça qu'on l'écrit).
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Si on parle d'un arbre de recherche parler de HashMap ou HashSet est hors sujet (les tables de hachage sont une autre structure de données qui n'a rien à voir), les TreeMap et TreeSet seraient plus à propos mais je pense qu'il s'agit ici d'un exercice où il faut tout refaire, sinon ce serait très facile...

Bref, un arbre de recherche contient des données triées du plus petit au plus grand, le fonctionnement de l'iterator doit permettre de récupérer ces données dans ce même ordre, sinon on perd tout l'intérêt du tri.
La confiance n'exclut pas le contrôle
0
delfre56 Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   48
 
Donc on ne doit pas partir de la racine de l'arbre ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ton algorithme part forcément de la racine puisque c'est ton point d'entrée mais la valeur de la racine devrait être intercalé entre les valeurs des deux sous arbres.
0