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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| class SonOf: #nom du graphe
def __init__(self,name, father = None): #methode constructeur
self.name = name
self.father = None
class Leaf(SonOf): #classe Leaf herite de SonOf
def __init__(self,name,value,father = None):
SonOf.__init__(self,name,father = None) #on appelle explicitement le constructeur de SonOf
self.value = value
def display(self, decalage = 0 ):
print(" "*decalage + 'la feuille {0} a pour valeur {1}'.format(self.name, self.value))
def __lt__(self,feuille_a_comparer): #comparer 2 feuille
if self.value < feuille_a_comparer.value:
return True
else :
return False
class Node(SonOf): #classe Node herite de SonOf
def __init__(self,name,sons=[],father=None): #sons=liste de fils
self.name = name
self.father = None
self.sons = list()
sons = Node
sons = Leaf
SonOf.__init__(self,name,father = None)
self.list_sons = sons
def sons(self):
return self.list_sons.keys()
def add_son(self,s):
s= Node
s = Leaf
self.list_sons[s] = True
return "father.attribut = s" # ajoute le fils s a la liste des fils, indique le nouveau pere de s en modiant son attribut father
def remove_son(self,s,node):
try :
self.list_sons[node].remove(node,s)
except :
print('Error')
self.father[s] = None
#construire un arbre: arbre = {'nom': 'racine','fils' : [{'nom': 'f1','fils' : [],},{'nom': 'f2','fils' : [{ 'nom' : 'f21','fils' : [],},]},],}
def display(self,decalage=0): #affiche le nom du noeud + appel meth display ET visite les noeuds
print(''*decalage, Node['nom'])
for e in Node['fils']:
self.display(e,decalage+4) |
Partager