Bonjour
Voici mon problème: j'aimerais créer un arbre non binaire en java et pouvoir effectuer un parcours en profondeur sur cet arbre
Pour l'instant voici les différents fichiers que j'ai créé:
mon fichier avec les racines et les successeurs.la chaine avant les ":" correspond au racine et les chaines après les ":" correspond aux successeurs
. : mon_repertoire rep tata toto tutu
mon_repertoire : directory loto lulu
rep : aaa chato gato rado rato
directory : auto moto velo
aaa : fado java torot
LireFichier.java: qui permet de lire les données depuis mon fichier
Noeud.java qui permet de créer les différents noeuds 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
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 import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; public class LireFichier { private ArrayList<String> racines; private ArrayList<String> sucesseurs; public LireFichier() { this.racines = new ArrayList<String>(); this.sucesseurs = new ArrayList<String>(); } public LireFichier(String nomFichier) { racines = new ArrayList<String>(); sucesseurs = new ArrayList<String>(); try { File f = new File(nomFichier); Scanner scanner = new Scanner(f); String data[]; String racine, sucesseur; while (scanner.hasNextLine()) { String line = scanner.nextLine(); // on sépare la racine et les sucesseurs par le : data = line.split(":"); // la racine se trouve à l'index 0 racine = data[0]; racines.add(racine); // chaque succeseur doit être séparée par l'espace sucesseur=data[1]; sucesseurs.add(sucesseur); } scanner.close(); } catch (FileNotFoundException exception) { System.out.println("File not found"); } } public ArrayList<String> getRacines() { return racines; } public void setRacines(ArrayList<String> racines) { this.racines = racines; } public ArrayList<String> getSucesseurs() { return sucesseurs; } public void setSucesseurs(ArrayList<String> sucesseurs) { this.sucesseurs = sucesseurs; } public String toString() { String res = ""; for (int i = 0; i < racines.size(); i++) { res = res+racines.get(i)+":"+sucesseurs.get(i)+"\n"; } return res; } }
Arbre.java: qui permet de créer l'arbre concerné
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 import java.util.ArrayList; public class Noeud { private ArrayList<Noeud> sucesseurs; private String valeur; public Noeud(String valeur){ this.valeur=valeur; } public Noeud(){ this.sucesseurs=new ArrayList<Noeud>(); this.valeur=""; } public ArrayList<Noeud> getSucesseurs() { return sucesseurs; } public void setSucesseurs(ArrayList<Noeud> sucesseurs) { this.sucesseurs = sucesseurs; } public String getValeur() { return valeur; } public void setValeur(String valeur) { this.valeur = valeur; } public void ajouter(Noeud sucesseur){ sucesseurs.add(sucesseur); } public String toString(){ String res ="Le noeud "+valeur.toString()+" a pour succeseur "; for(int i=0;i<sucesseurs.size();i++){ res.concat(sucesseurs.get(i).toString()); } return res; } }
et un fichier main pour faire executer tout cela.
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 public class Arbre { private Noeud racine; public Noeud getRacine() { return racine; } public void setRacine(Noeud racine) { this.racine = racine; } public Arbre(LireFichier fich) { this.racine = new Noeud(fich.getRacines().get(0)); } public void construireArbre(LireFichier fich) { } public void parcours_profondeur() { } }
Comme vous pouvez le constaté je ne sais pas comment faire pour construire l'arbre.merci d'avance pour votre aide.
Partager