Bonjour,

Je suis actuellement en train de travailler sur un TP impliquant la création d'un arbre lexicographique, dont voici le sujet http://prevert.upmf-grenoble.fr/Prog/Java/TP7.pdf

Donc j'ai déjà défini les classes noeudA, noeud... et arbre lexicographique comme suit :

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
public class NoeudA {
 
    private NoeudA alt;
 
    public NoeudA(){
    }
 
    public NoeudA(NoeudA a) {
        a = alt;
    }
 
    class Noeud extends NoeudA{
        privatecharinfo;
        private NoeudA succ;
 
        public Noeud(char c, NoeudA s, NoeudA a) {
 
            super(a);
            c = info;
            s = succ;
        }
 
        public class NoeudMarque extends NoeudA {
            public NoeudMarque(NoeudA a){
                super(a);
            }
        }
        //pour NoeudVide
 
        public class NoeudVide extends NoeudA {
            static NoeudVide s = new NoeudVide();
            protected NoeudVide(){
            }
 
            public static NoeudVide getInstance(){
                returns;
            }
        }
}
La classe la plus importante est la classe ArbreLexicographique avec toutes les méthodes qu'elle va avoir. Le fait est que j'ai un problème pour écrire ces méthodes.

J'ai donc commencé à écrire la classe arbreLexicographique comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public class ArbreLexicographique {
     private NoeudA racine;
 
     public ArbreLexicographique(){
     racine = NoeudVide.getInstance();
}
J'ai donc commencé à écrire la méthode appartient qui dit si un mot appartient ou non à l'arbre;
Pour ce faire j'ai besoin d'une autre méthode appartient pour un Nœud cette fois si qui dit si un mot appartient ou non à un Nœud...

J'ai donc commencé à écrire cette méthode dans la classe Nœud comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public boolean appartient(String s){
    int l= s.length();
 
    if ((l==1) && (succinstanceof NoeudMarque)){
        if(s.charAt(0)==info) returntrue;
        else return false; 
    }
    else{
        if(existe(s.charAt(0)))
            returnsucc.appartient(s.substring(1,l));
    }
Là je bloque, je sais néanmoins que un Nœud étant défini nœud successeur et un nœud alternatif, cette fonction doit être récursive.

Je crois aussi qu'on aura besoin d'une méthode dans la classe

Nœud qui dit si un caractère existe ou non dans le Nœud
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public boolean existe (char c) {
    if (c == info) {
        return true; // si le caractère informatif du noeud alors c'est bon
    } else {
        if (!(succ instanceof NoeudMarque)) {
            return succ.existe(c);
        } else {
            return false;
        }
    }
}
Voici donc où je bloque je n'arrive pas à concrétiser les méthodes.

Merci d'avance pour votre aide.