from File import File_chaine as File from Pile import Pile_chaine as Pile def creer_arbre(val): """ Renvoie un nouvel arbre dont la racine est val . """ return [val, None, None] def est_vide(a): """ Indique si l ' arbre a est vide ou non. """ return a == None def racine(a): """ Renvoie la racine de l ' arbre non vide a. """ return a [0] def fils_gauche(a): """ Renvoie le fils gauche de l ' arbre non vide a. """ return a [1] def fils_droit(a): """ Renvoie le fils droit de l ' arbre non vide a. """ return a [1] def insere_gauche(a, val): """ Insère la valeur val à la racine du fils gauche de l'arbre non vide a. L'ancien fils gauche de a devient le fils gauche du nouveau nœud. Renvoie le sous arbre créé . """ nouvel_arbre = nouvel_arbre[1] = . . .. . = nouvel_arbre return nouvel_arbre def insere_droit(a, val): """ Ins è re la valeur val à la racine du fils droit de l ' arbre non vide a. L ' ancien fils droit de a devient le fils gauche du nouveau nœud. Renvoie le sous arbre cr éé . """ nouvel_arbre = . . . .. . . . . .. . . . . . nouvel_arbre[1] = . . .. . . . . . .. . . . . . .. . = nouvel_arbre return nouvel_arbre a = Arbre () class Expression: def __init__(self, racine, fils_gauche, fils_droit): type (racine) = '+' or '*' or int if type(racine) == int: fils_gauche = none or a