cs_Delamour
Messages postés19Date d'inscriptiondimanche 11 juillet 2004StatutMembreDernière intervention 1 février 2007
-
12 juin 2005 à 03:55
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDerniè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!
cs_Delamour
Messages postés19Date d'inscriptiondimanche 11 juillet 2004StatutMembreDernière intervention 1 février 2007 18 juin 2005 à 01:27
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.