def parcours(self , L = []): L.append(self.root) if self.G: self.G.parcours(L) if self.D: self.D.parcours(L) return L tree = Arbre(3, Arbre( '+', Arbre( 4 , Arbre('*',None,None) , Arbre(5,None,None) ), Arbre( '/' , Arbre(2,None,None) , Arbre('-',None,None) ) ), Arbre( 6, Arbre( '+' , Arbre(4,None,None) , Arbre('*',None,None) ), Arbre( 9 , Arbre('+',None,None) , Arbre(2,None,None) ) ) ) L = tree.parcours() calcul = ''.join(str(i) for i in L) print ( eval(calcul) )