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

cs_Delamour 19 Messages postés dimanche 11 juillet 2004Date d'inscription 1 février 2007 Dernière intervention - 12 juin 2005 à 03:55 - Dernière réponse : JBAware 174 Messages postés lundi 23 septembre 2002Date d'inscription 6 avril 2011 Dernière intervention
- 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 

Votre réponse

3 réponses

Meilleure réponse
JBAware 174 Messages postés lundi 23 septembre 2002Date d'inscription 6 avril 2011 Dernière intervention - 14 juin 2005 à 00:45
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

Merci JBAware 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de JBAware
cs_Delamour 19 Messages postés dimanche 11 juillet 2004Date d'inscription 1 février 2007 Dernière intervention - 18 juin 2005 à 01:27
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
JBAware 174 Messages postés lundi 23 septembre 2002Date d'inscription 6 avril 2011 Dernière intervention - 20 juin 2005 à 00:36
0
Merci
8-) JB@WAre
Commenter la réponse de JBAware

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.