Structure d'arbre

Résolu/Fermé
FireWire - 19 avril 2008 à 14:48
 FireWire - 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

1 réponse

vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
19 avril 2008 à 18:37
Salut,

C'est normal : dans les conditions, tu dis que si le noeud de gauche existe, il doit lire le noeud courant ...
Tu devrais essayer avec :
System.out.println("Valeur noeud "+n.getvalue());                
if( n.getleft()  != null ) lire_arbre( n.getleft()  );
if( n.getright() != null ) lire_arbre( n.getright() );


De plus, il faut enlever le else, sinon, tu ne vas pas parrcourir tout l'arbre ...

@Bientôt
1
Merci pour ta réponse, ça va un peu mieux, j'ai essayé de travailler encore dessus
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
FireWire > FireWire
19 avril 2008 à 23:01
j'ai résolu le problème :)
0