Stucture d'arbre

jeff705 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 5 septembre 2009 - 19 avril 2008 à 15:25
jeff705 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 5 septembre 2009 - 19 avril 2008 à 23:01
Bonjour,


j'ai une fonction (java) qui lit une structure d'arbre (généalogique). Le noeud a chaque fois 2fils:

public void lire_arbre(Node n)
{
/*
*lire(noeud)
*if noeud.gauche != nul alors lire(noeud.gauche)
*if noeud.droite != nul alors lire(noeud.droite)
*/

System.out.println("Valeur noeud "+n.getvalue());
if(n.getleft()!=null)
{
lire_arbre(n);
}

else if(n.getright()!=null)
{
lire_arbre(n);
}
}



ma structure Node est définie comme suit:

class Node
{
Node left;
Node right;
String etiquette;
... ect

//les fonctions get et set en plus

}



Elle boucle sur le noeud racine tout le temps...
C'est peut-être une bête erreur que je vois pas donc peut-être que l'un de vous verra ce qu'il manque.

Merci de votre aide

3 réponses

theguitou Messages postés 75 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 14 janvier 2009 35
19 avril 2008 à 18:40
Salut,

C'est parce que tu (r)appelles ta fonction toujours sur le meme noeud

if(n.getleft()!= null)
{

   lire_arbre(n .getleft() );

}

                    

else if(n.getright()! =null)
{

   lire_arbre(n.getright());

}

De plus, ton if-else ne va pas faire ce que tu voulais (essaies de comprendre pourquoi).
0
jeff705 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 5 septembre 2009
19 avril 2008 à 22:40
Merci pour ta réponse, ça va un peu mieux, j'ai essayé de travailler encore dessus.
J'ai retirer le else car il lisait pas tout l'arbre (en plus je l'avais mit en commentaire au dessus :-s )

mais quand je lui met en paramètre :

System.out.println("Valeur noeud "+n.getvalue());
if( n.getleft() != null ) lire_arbre( n.getleft() );
if( n.getright() != null ) lire_arbre( n.getright() );




il me renvoie un "java.lang.NullPointerException"

car il lit chaque fils de gauche puis après je suppose qu'il tombe sur rien du tout...

j'essaye de trouver comment remonter l'arbre pour lire les fils de droite :-s
Vous voyez le problème? Ce que je veux dire?
0
jeff705 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 5 septembre 2009
19 avril 2008 à 23:01
j'ai résolu le problème :)
0
Rejoignez-nous