Forum EduPython

Echanges autour d'EduPython.

Vous n'êtes pas identifié(e).

#1 2020-10-22 15:20:52

gilles2508
Membre
Inscription : 2019-01-07
Messages : 14

POO, arbre binaire de recherche et POO autour d'un répertoire téléphon

Bonjour,

le programme est ci-dessous. Il utilise une classe "contact" que je voudrais intégré dans un arbre binaire de recherche.
La fonction EntrerContact fonctionne pour le premier conatct entrer est bien réalisé, mais le second plante.

Merci pour vos lumières




voici le programme auquel il faut ajouter les appels aux fonction en console.
***************************************************************************

#Classe conatct pour un repertoire telephonique inscriot dans un arbre binaire de recherche
class contact:
    """ un noeud d'un arbre binaire de recherche"""
    def __init__(self, v, n, g, d):
        self.valeur = v
        self.numero = n
        self.gauche = g
        self.droit = d

""" None représente un arbre vide, c’est à dire inexistant """
repertoire = contact(None, None, None, None)


#Fonction ajoutant un noeuds à l'arbre binaire de recherche
def EntrerContact(ABR, nom, numero):
    if ABR.valeur == None:
        ABR = contact(nom, numero, None, None)
        print(ABR)
    else:
        print ('else')
        if nom < ABR.valeur:
            EntrerContact(ABR.gauche, nom, numero)
        else:
             EntrerContact(ABR.droit, nom, numero)
    return ABR



#Fonction affichant les noeuds de l'arbre
def AfficherArbre(arbre):
    if arbre != None:
        print(arbre.valeur, " ", arbre.numero)
        AfficherArbre(arbre.gauche)
        AfficherArbre(arbre.droit)

Hors ligne

#2 2020-10-22 15:28:29

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : POO, arbre binaire de recherche et POO autour d'un répertoire téléphon

Bonjour, pouvez-vous donner un exemple de saisie qui plante ?
Merci

VM

Hors ligne

#3 2020-10-22 16:03:36

gilles2508
Membre
Inscription : 2019-01-07
Messages : 14

Re : POO, arbre binaire de recherche et POO autour d'un répertoire téléphon

Ce qui marche 1 fois:

repertoire = EntrerContact(repertoire, 'aa', '03258')
AfficherArbre(repertoire)

puis ce qui plante:

repertoire = EntrerContact(repertoire, 'bb', '058')


merci

Hors ligne

#4 2020-10-23 06:57:19

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : POO, arbre binaire de recherche et POO autour d'un répertoire téléphon

Bonjour, au premier appel, ça fonctionne car repertoire.valeur est None, donc il fait l'insertion.

Pour le second appel, il entre une fois dans la fonction repertoire.valeur est renseignée, il tente alors d'insérer à droite de l'arbre, sauf que celui-ci est Vide et donc ne possède pas d'attribut valeur.

Je pense que le test à faire serait plutôt

    if ABR == None:

et l'initialisation :

repertoire = None

Vincent

Hors ligne

#5 2020-10-24 15:03:33

gilles2508
Membre
Inscription : 2019-01-07
Messages : 14

Re : POO, arbre binaire de recherche et POO autour d'un répertoire téléphon

Mille mercis.

Cela fonctionne. J'avais certainement confondu arbre et valeur.

Hors ligne

Pied de page des forums