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 :
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.
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; } } }
J'ai donc commencé à écrire la classe arbreLexicographique comme suit :
J'ai donc commencé à écrire la méthode appartient qui dit si un mot appartient ou non à l'arbre;
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(); }
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 :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.
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)); }
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
Voici donc où je bloque je n'arrive pas à concrétiser les méthodes.
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; } } }
Merci d'avance pour votre aide.
Partager