Stucture d'arbre

Signaler
Messages postés
5
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
5 septembre 2009
-
Messages postés
5
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
5 septembre 2009
-
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
A voir également:

3 réponses

Messages postés
75
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
14 janvier 2009
33
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).
Messages postés
5
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
5 septembre 2009

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?
Messages postés
5
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
5 septembre 2009

j'ai résolu le problème :)