Itérateur sur un arbre binaire de recherche

Fermé
delfre56 Messages postés 340 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 23 février 2018 - 28 avril 2016 à 11:11
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 29 avril 2016 à 18:57
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 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
28 avril 2016 à 11:13
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 340 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 23 février 2018 48
28 avril 2016 à 11:32
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 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
28 avril 2016 à 11:35
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 28/04/2016 à 19:06
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 340 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 23 février 2018 48
29 avril 2016 à 12:08
Donc on ne doit pas partir de la racine de l'arbre ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 avril 2016 à 18:57
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