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('la feuille {0} a pour valeur {1}'.format(self.name, self.value, decalage))
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.list_sons = self.Node
self.list_sons = self.Leaf
SonOf.__init__(self,name,father = None)
self.list_sons = sons
def add_son(self,s):
self.Leaf = s
self.Node = s
self.list_sons[s] = True
return "father.attribut = s" # ajoute le ls s a la liste des ls, 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
def display(self,decalage=0): #affiche le nom du noeud + appel meth display
for e in self.list_sons():
print('fils {0} de {1}')
return self.display
class Tree(Node,Leaf): #héritage
def __init__(self,name,father=None,sons=[],value=None):
self.value=[]
self.value=None
self.sons=None
self.sons=[]
if value != None:
Leaf.__init__(self,name,value,father = None)
self.sons=[]
else:
Leaf.__init__(self,name,value,father = None)
self.value=None
def display(self,decalage=0):