Bonjour,
Je suis actuellement sur les arbres et leurs parcours.

Alors, je ne comprends pas pourquoi mon premier parcours, que je pense juste, ne fonctionne pas dans mon main.
Ne vous formalisez pas sur la méthode Afficher, c'est celle qui m'était demandée. Elle est étrange mais retrace bien le parcours d'un arbre.
Peut-être que mon problème vient de là mais si c'est le cas celà va me laisser dubitatif

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
class Noeud {
    int valeur;
    Noeud filsGauche, filsDroit;
 
    Noeud(int v) {
	valeur = v;
	filsGauche = filsDroit = null;
    }
 
}
 
 
class ArbreBinaire {
    Noeud racine;
 
    ArbreBinaire() {
	racine = null;
    }
 
    void Afficher() {
	AfficherNoeud(racine, 0);
    }
 
    boolean EstVide() {
	if (racine == null)
	    return true;
	else
	    return false;
    }
 
    void AfficherNoeud(Noeud n, int niveau) {
	String decalage = "";
 
	for (int i = 0; i < niveau; i++)
	    decalage += "   ";
 
	System.out.print(decalage);
 
	if (n != null) {
	    System.out.println("|->" + n.valeur);
 
	    niveau++;
 
	    AfficherNoeud(n.filsGauche, niveau);
	    AfficherNoeud(n.filsDroit, niveau);
	} else {
	    System.out.println("|->null");
	}
    }
 
    void Ajouter(int v) {
	if (racine == null)
	    racine = new Noeud(v);
	else
	    AjouterNoeud(racine, v);
    }
 
    void AjouterNoeud(Noeud r, int v) {
	if (r.valeur >= v) {
	    if (r.filsGauche == null)
		r.filsGauche = new Noeud(v);
	    else
		AjouterNoeud(r.filsGauche, v);
	} else {
	    if (r.filsDroit == null)
		r.filsDroit = new Noeud(v);
	    else
		AjouterNoeud(r.filsDroit, v);
	}
    }
 
// et voilà où je coince. Je ne poste qu'un parcours, les autre ne présentant que de très légères modifications.
 
 
    void ParcoursPrefixe() {
	System.out.print("[ ");
	ParcoursPrefixeNoeud(racine);
	System.out.print(" ]");
    }
 
    void ParcoursPrefixeNoeud(Noeud n) {
	if (n != null) {
	    System.out.print(n.valeur + " ");
	    ParcoursPrefixeNoeud(n.filsGauche);
	    ParcoursPrefixeNoeud(n.filsDroit);
	}
    }
}

Mon Main, le but est d'afficher l'arbre selon un certain ordre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
public class ArbreBinaireTest {
    public static void main(String[] args) throws IOException {
	ArbreBinaire abr = new ArbreBinaire();
 
	abr.Ajouter(6);
	abr.Ajouter(3);
	abr.Ajouter(8);
	abr.Ajouter(2);
	abr.Ajouter(5);
	abr.Ajouter(7);
	abr.Ajouter(9);
	abr.Ajouter(4);
 
	System.out.println("ABR :");
	abr.Afficher();
 
	System.out.println("Parcours préfixe : " + abr.ParcoursPrefixe());
    }
}