Bonsoir à tous, je suis actuellement entrain de voir le concept de liste chaînée et doublement chaînée en programmation java et notre professeur nous a demander de réaliser un ABR(Arbre de recherche binaire). Fonctionnant comme ceci : Chaque "élément" de l'arbre possède une valeur(dans notre cas en int) et possède un "fils" gauche et un fils "droit".
Le programme (tournant sur blueJ) fonctionnerait donc comme ceci : Lors de l’exécution, on demande à l'utilisateur d'entrer la première valeur (par exemple 5). On va donc créer un premier arbre possèdant une valeur int qui vaut 5, mais également caractérisé un fils gauche vide (null) et un fils droit vide (null).
Pour cette étape j'ai compris ce qu'il fallait faire, rien de bien compliqué en soit.
Cependant, on doit aussi créer une méthode poiur ajouter des éléments(qui seront également des arbres !) en fonction des conditions suivantes : si la valeur entrée est plus petite(par exemple 3) que la valeur de départ(imaginons v comme variable) alors on remplace le fils gauche vide(null) par le nouvel arbre de valeur qui faudra 3 et qui possèdera lui aussi un fils gauche et droit tout les deux null.
Si la valeur entrée est plus grande que v, alors on la met au fils droit.
C'est la que cela commence à devenir difficile.
Imaginons que l'on ré encode une valeur en plus, alors il faut vérifier si elle est plus grande que v, si oui alors c'est assez simple, la valeur v de départ la prends comme arbre à la place de null.
Hors s'il on rentre de nouveau une valeur, par exemple 4, il faut vérifier si 4 est plus petit que5, oui et ensuite il faut la comparé à 3 et voir s'il elle est plus grande, ici oui donc on la met à la place du fils droit
Alors on pourrait pensée qu'il suffirait de faire un double if, hors notre professeurs veut que nous puissions en entrer une infinité, d'où ici l'intérêt de méthode récursive que je ne comprends pas très bien(j'ai compris la façon dont cela marchait, mais je ne comprends pas comment l'utilisait dans ce cas ci avec une valeur( v ) passait en parametre de la méthode).
Je m'en tourne donc vers vous pour essayer de m'expliquer comment cela marche avec si possible un exemple ( attention je ne demande pas que vous fassiez le travail, je demande juste à comprendre).
Merci d'avance et bonne fin de soirée.