Structure d'arbre [Résolu/Fermé]

Signaler
-
 FireWire -
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

Messages postés
793
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
155
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60516 internautes nous ont dit merci ce mois-ci

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?
> FireWire
j'ai résolu le problème :)