Bonsoir, j’essaye d’implémenter une structure d’arbre binaire en Java ainsi que ses fonctions principales. J’ai un petit soucis lors de l’implémentation d’une fonction de recherche d’un élément n dans l’arbre binaire qui si il le trouve, le programme return true sinon false.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | public class Arbre { private int valeur; private Arbre gauche; private Arbre droit; public Arbre(int x) { this.valeur = x; } public Arbre(int x, Arbre g, Arbre d) { this.valeur = x; this.gauche = g; this.droit = d; } public int getValeur() { return valeur; } public Arbre getSousArbreGauche() { return gauche; } public Arbre getSousArbreDroit() { return droit; } public static void afficheNoeud(Arbre a) { if(a != null) { System.out.println(a.valeur); afficheNoeud(a.gauche); afficheNoeud(a.droit); } } public static boolean trouveElem(Arbre a, int n) {; if(a != null) { System.out.println(1); if(a.valeur == n) { System.out.println(2); return true ; } else { System.out.println(3); trouveElem(a.gauche, n); trouveElem(a.droit, n); } } System.out.println(4); return false; } public static void main(String[] args) { Arbre b = new Arbre(2); Arbre c = new Arbre(10); Arbre a = new Arbre(5,b,c); afficheNoeud(a); System.out.println(trouveElem(a, 2)); //System.out.println(trouveElem(a, 5)); } } ` |
Le résultat donne ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 5 // 2 // affichage de l'arbre 10 // 1 3 1 2 // On voit qu'il passe dans le if mais ne return rien 4 1 3 4 4 4 4 false |
Dans cet arbre il y a 3 sommets, la racine est 5 et a deux fils 2 et 10. Dans mon main je cherche l’élément 2 donc la fonction devrait return true. Ce que je comprends pas c’est qu’on voit bien qu’il passe dans mon deuxième if (affichage du 2) mais il ne return rien.
Merci d’avance !
+0
-0