Echanges autour d'EduPython.
Vous n'êtes pas identifié(e).
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
Bonjour, pouvez-vous donner un exemple de saisie qui plante ?
Merci
VM
Hors ligne
Ce qui marche 1 fois:
repertoire = EntrerContact(repertoire, 'aa', '03258') AfficherArbre(repertoire)
puis ce qui plante:
repertoire = EntrerContact(repertoire, 'bb', '058')
merci
Hors ligne
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
Mille mercis.
Cela fonctionne. J'avais certainement confondu arbre et valeur.
Hors ligne