Bonjour tout le monde,
je suis un peu étonné devant un petit problème en java, sachant que ça fait très longtepmpe que je développe à l'aide de ce langage.
en effet, je voudrais créer un arbre binaire de recherche.
ci dessous le code source
Objet Noeud qui représente chaque noeud de larbre
Objet Index qui représente la racine de l'arbre
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 public class Noeud implements Comparable { private String mot=null; private int nbrOccurence; private int priorite; private Noeud LeftNoeud; private Noeud RightNoeud; public Noeud(){ } public Noeud(String mot, int nbrOccurence, int priorite){ this.mot=mot; this.nbrOccurence=nbrOccurence; this.priorite=priorite; this.LeftNoeud=null; this.RightNoeud=null; } ......
La classe Main
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 public class Index { public Noeud Racine; public Index() { } public void addWord(String mot) { mot=mot.toLowerCase(); Noeud noeud=new Noeud(mot,1,0); addWord(Racine, noeud); } private boolean addWord(Noeud Dic,Noeud noeud) { if(Dic==null) { Dic=noeud; return true; } if(Dic.getMot().compareTo(noeud.getMot())==0) { Dic.setNbrOccurence(Dic.getNbrOccurence()+1); return true; } if(Dic.getMot().compareTo(noeud.getMot())>0) { this.addWord(Dic.getLeftNoeud(), noeud); return true; } if(Dic.getMot().compareTo(noeud.getMot())<0) { this.addWord(Dic.getRightNoeud(), noeud); return true; } return false; }
Même si j'ai ajouté des mots, la racine de l'index est toujours null !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static void main(String[] args) { // TODO code application logic here Index index = new Index(); index.addWord("anssesami"); index.addWord("amal"); index.addWord("toto"); if(index.getRacine()==null) System.out.println("c'est koi ce délire!! "); }
en effet, le problème est que lorsque j'appelle la méthode
addWord(Racine, noeud); cette instruction Dic=noeud; ne se rapporte pas sur la racine et pourtant dans la première appelle Dic et Racine sont deux références sur la même donnée
plzzz quelqu'un m'éxplique ce qui se passe
Merci de votre aide
Partager