Ajouter un noeud dans un arbre binaire

wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009 - 28 févr. 2007 à 02:14
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009 - 2 mars 2007 à 12:23
Bonsoir la team,
je travaille en ce moment sur les arbres binaires de recherche et je rencontre un problème lorsque je souhaite ajouter un noeud.
Voici de la fonction dont je dispose:

void ajout(Noeud r, Noeud p, boolean g, element e)

Lorsque je veux ajouter un noeud j'apelle cette fonction grâce à la commande suivante:
ajout(racine, null, true, x);

pouvez vous svp me donner la façon qui me permmettrai d'implémenter le premier noeud de l'arbre?

En effet, au tout début je n'ai pas d'abre donc ma racine de l'abre est : "racine = null"

quand je vais parcourir ma fonction en java, je vais rencontrer le cas suivant lorsque mon arbre est vide : (dans ma fonction ajout)

 if ( r == null) {
     r.contenu = e ;
     r.fils_droit = null;
    r.fils_gauche = null;
}// incomplet ....

interprétation:
au début mon arbre est vide, donc j'ajoute à ma racine l'élément (étiquette) e , et j'initialise ses 2 fils à "null";
il me manque quelquechose, et c'est ça qui me bloque car je ne sais pas quoi:
il me faudrait créer un noeud et que ma racine pointe dessus.
mais comment le faire en java??
aidez moi svp,
berni ;-)

12 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 févr. 2007 à 09:07
 if ( r == null) {
     r.contenu = e ;
     r.fils_droit = null;
    r.fils_gauche = null;
}// incomplet ....
=> si r est null ton prog il va planter a ce niveau il faut que instancier l'objet r avant de faire des r.contenu ...

++
0
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
28 févr. 2007 à 10:49
Merci Lauret pour ta réponse, mais pourraistu me dire comment instancer r,
car j'appelle ma fonction avec la commande suivante:
"ajout(racine, null, true, x) " ?
berni.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 févr. 2007 à 10:53
ben r = new Noeud()
0
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
28 févr. 2007 à 11:02
j'ai déjà essayé mais cela ne marche pas.. c'est pour cela que je ne compend pas!
comment pourrais je faire Laurent?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
28 févr. 2007 à 11:05
le constructeur noeud n'est pas défini...
je ne suis pas familié avec java, je le suis beaucoup plus avec C, c'est pour cela que mes questions peuvent vous paraître ridicule...
tout aide me sera donc très utile..
merci, berni.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 févr. 2007 à 11:08
Ton constructeur de noeud prend sans doute des parametres.
0
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
28 févr. 2007 à 11:20
 public Noeud(Comparable e, Noeud gauche, Noeud droit)
    {
        element = e;
        this.gauche = gauche;
        this.droit = droit;
    }

if (r == null) {                         
            r = new Noeud( e,null, null) ;
          
        }

cela ne m'affiche rien, mais au moins je compile, a tu une idée Laurent?
Merci déjà de ton aide.
berni.
0
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
28 févr. 2007 à 11:21
 public Noeud(Comparable e, Noeud gauche, Noeud droit)
    {
        element = e;
        this.gauche = gauche;
        this.droit = droit;
    }

if (r == null) {                         
            r = new Noeud( e,null, null) ;
          
        }

cela ne m'affiche rien, mais au moins je compile, a tu une idée Laurent?
Merci déjà de ton aide.
berni.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 févr. 2007 à 11:29
Si tu veux que sa affiche des chose il faut mettre des System.out.print au endroit un tu as envied'afficher des choses
0
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
1 mars 2007 à 13:59
Bonjour Laurent,
j'ai résolu mon problème de modification de mon noeud r (racine de mon arbre bianaire lors de l'apelle de la fonction : "ajout(racine, null, true, x)"
qui, pour chaque ajout d'un noeud sera lancé telle quelle.
Mais pourquoi rien ne s'affiche lorsque je clique sur mon bouton pour ajouter un noeud?
Pourtant r est bien créer lorsque l'arbre est vide avec "new Noeud(......)".

Lorsque je rajoute un deuxième noeud, mon System.out.println(r), me dit que r est vide!
Pourquoi n'est il pas pris en compte?

Berni.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
1 mars 2007 à 14:20
Poste un peu de code, car la c'est dur de t'aider comme ca
0
wititit Messages postés 11 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 22 juillet 2009
2 mars 2007 à 12:23
Bonjour Laurent, je te remercie pour ton aide, j'ai résolu mon problème!!
Par rapport au C, Java est un langage de plus bas niveau,
ainsi lors d'une appel d'une fonction, les paramètres changeant dans la fonction, vallent les même valeurs qu'ils avaient avant l'appel de la fonction!
Ainsi, pour revenir à mon problème, il fallait rajouter : racine = r, car est était bien ma racine dans ma fonction, mais seulement dedans, en dehors de la fonction, r ne variait pas!
Merci beaucoup pour ton aide, ça m'a vraiment aidé!
@ bientôt, Laurent, et encore merci,
berni ;-)
0
Rejoignez-nous