Creation d'un arbe non binaire
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
Code:
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;
}
} |
Noeud.java qui permet de créer les différents noeuds de l'arbre
Code:
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;
}
} |
Arbre.java: qui permet de créer l'arbre concerné
Code:
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() {
}
} |
et un fichier main pour faire executer tout cela.
Comme vous pouvez le constaté je ne sais pas comment faire pour construire l'arbre.merci d'avance pour votre aide.