Retourner la Liste des Elements d un Arbre Binaire? [Résolu]

Messages postés
19
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
1 février 2007
- - Dernière réponse : JBAware
Messages postés
174
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
6 avril 2011
- 20 juin 2005 à 00:36
Slut,
J ai implementé un arbre Binaire et j aimerai retourner une Liste(Vector) contenant ts les Elemnts de mon Arbre Binaire. J ai reussi a le faire en passant par un String ki retourne ts les elemnts de l arbre separé par des points, puis grace a StringTokenizer je recupere ces elemnts et j ajoute a ma liste. Mais malheureusemnt il s avere que c est une methode un peu lourde et pas tres apprecié. Alors j aimerai parcourir mon arbre Binaire directemnt et ajouter chaque Elemnt a ma Liste. qd je fais ceci, m a liste ne contient ke la racine :

public Vector listeArbreBinaire(){
if(racine ==null){
list = null;
}
else{
while(Noeud.getGauche()==null && Noeud.getDroit==null){
list.add(racine.getElement());
if(Noeud.getGauche()!=null){
listeArbreBinaire(Noeud.getGauche());
}
if(Noeud.getDroit()!=null){
llisteArbreBinaire(Noeud.getDroit());
}
return list;
}
Merci d avance!
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
174
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
6 avril 2011
1
3
Merci
Salut,

Perso j'utliserai une méthode récursive...

du genre :


public void listeArbreBinaire (Vector list, Noeud noeud){


if (noeud.getGauche() != null){
listeArbreBinaire (list, noeud.getGauche());


}
if (noeud.getDroit() != null){
listeArbreBinaire (list, noeud.getDroit());


}
list.add(noeud.getElement();
}

JB@WAre

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 208 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JBAware
Messages postés
19
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
1 février 2007
0
Merci
tout d abord merci pr ton aide , la methode ke tu m as proposé marche super bien. Sinon j ai une autre preocupation. J aimerai enregistrer les elements de ma liste ds mon arbre binaire tout en veillant que l arbre crée soit un arbre binaire equilibré.
je te propose mon code:

public Noeud equilibre(Vector liste){
Vector elemntdedroit= new Vector();
Vector elemntdegauche= new Vector();
/*cette methode range alphabetiquement du plus petit au plus grand les elemnts contenus ds le vecteur.*/
rangealphabetiquement(meinListe);
int milieu= liste.size()/2;
Element monElemnt = (Element )liste.get(milieu);// racine de l arbre
for(int i=0; i<milieu; i++){
Element element = (Element )liste.get(i);
elemntdegauche.add(element );
}


for(int j=milieu+1; j<liste.size(); j++){
Element element = (Element )liste.get(j);
elemntdedroit.add(element );
}
Noeud monnoeud = new Noeud(element);
if(elemntdegauche.isEmpty()==false){
monnoeud .setGauche(equilibre(elemntdegauche));
}
if(elemntdedroit.isEmpty()==false){
monnoeud .setDroite(equilibre(elemntdedroit));
}
return monnoeud;
}

je comprends prkoi ca ne marche pas!!!!
Merci de ton aide.
Commenter la réponse de cs_Delamour
Messages postés
174
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
6 avril 2011
1
0
Merci
8-) JB@WAre
Commenter la réponse de JBAware