IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Recherche dans ABR


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut Recherche dans ABR
    Salut à touus !
    Je dois faire une méthode recherche(int n) dans un arbre binaire de recherche , qui retourne le sous-arbre de this dont la racine a pour valeur, n. J'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class Noeud {
       private int etiquette;
       private Noeud gauche;
       private Noeud droit;
     
       public Noeud(int etiquette, Noeud gauche, Noeud droit) {
          this.etiquette = etiquette;
          this.gauche = gauche;
          this.droit = droit;
       }
     
       public Noeud(int etiquette) {
          this(etiquette,null,null);
       }
     
       public Noeud recherche(int x) {
          if(this.etiquette == x) {
             return this;
          }
          if(this.etiquette <= x) {
             if(this.droit != null) {  
                if(this.droit.etiquette == x) {
                   return this.droit;
                }
                else this.droit.recherche(x);        
             }    
          }
          if(this.etiquette >= x) {
             if(this.gauche != null) {  
                if(this.gauche.etiquette == x) {
                   return this.gauche;
                }
                else this.gauche.recherche(x);        
             }
          }
          return null;
       }
    }
    Apparemment ça fonctionne mais quand je veux rechercher une feuille dans l'abre, j'ai une erreur du style nullpointer, pourquoi, ai-je oublier des cas ?
    voila merci

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    il manque des return:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    if(this.etiquette <= x) {
             if(this.droit != null) {  
                if(this.droit.etiquette == x) {
                   return this.droit;
                }
                else return this.droit.recherche(x);        //ICI
             }    
          }
          if(this.etiquette >= x) {
             if(this.gauche != null) {  
                if(this.gauche.etiquette == x) {
                   return this.gauche;
                }
                else return this.gauche.recherche(x);        //ET LA
             }
          }
    Ça compile parce que c'est syntaxiquement correct mais ça ne fait pas ce que tu voudrais.
    D'ailleurs tu peux le simplifier avec le même résultat en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(this.etiquette <= x) {
             if(this.droit != null) {  
                return this.droit.recherche(x);
             }    
          }
    else if(this.etiquette > x) {
             if(this.gauche != null) {  
                return this.gauche.recherche(x);
             }
          }
    Ceci dit ça ne provoquerai pas de NullPointerException.
    Le mieux serait de donner le code qui lance tout ça, et surtout de donner la stacktrace complète de l'erreur (en gros le numéro de ligne où survient l'erreur).
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    Merci de ton intervention . Le code que tu as mis n'est pas tout a fait ce que je veux vu que je dois retourner un sous - arbre qui a pour racine l'argument, avec ses fils, pas juste la valeur du noeud en argument !
    Mon truc a l'air de marcher, je crois que le probleme est au niveau du dernier return, je ne sais ce qu'il faut retourner (l'erreur nullpointer vient de là, j'avais mis return null à la fin et quand je mettais la valeur d'une feuille en argument, il m'affichait cette erreur)

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    Probleme résolu, je suis tete en l'air parfois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       public Noeud recherche(int x) {
          if(this.etiquette == x) return this;
          else if(this.etiquette <= x) {
             if(this.droit != null) {  
                return this.droit.recherche(x);
             }    
          }
          return this.gauche.recherche(x);
       }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de recherche dans une BD
    Par ledevelopeur dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/04/2004, 09h49
  2. recherche dans un projet
    Par FreshVic dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 26/04/2004, 20h04
  3. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57
  4. [BPW]Problème de recherche dans une boîte liste
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 05/07/2003, 15h10
  5. recherche dans un document xml via DOM
    Par ndoye_zaff dans le forum APIs
    Réponses: 5
    Dernier message: 11/06/2003, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo