Donada la classe expressio que permet guardar expressions matemàtiques en un arbre binari usant memòria dinàmica, cal implementar el mètode
que retorna un string amb la representació infixa de l’expressió amb tots els parèntesis possibles, excepte quan són operands (constants o variables) que mai fan falta. Els operadors i operands es guarden en l’string token de cada node. Els operadors unaris (+ - sqrt log exp) tenen el fill dret buit.
Cal enviar a jutge.org la següent especificació de la classe expressio i la implementació del mètode dins del mateix fitxer.
Per testejar la solució, jutge.org ja té implementats la resta de mètodes de la classe expressio i un programa principal que llegeix una expressió i desprès crida el mètode llista_tokens_parentitzada.
Entrada
L’entrada consisteix en la descripció de l’arbre de l’expressió (el seu recorregut en preordre, en el qual inclou les fulles marcades amb l’string "#"). Per exemple, l’arbre
[*] \__[pt] | \__# | \__# \__[2] \__# \__#
es descriuria amb
* 2 # # pt # #
Sortida
El contingut de l’arbre binari seguit per l’string que retorna el mètode llista_tokens_parentitzada.
Observació
Només cal enviar la classe requerida i la implementació del mètode llista_tokens_parentitzada. Pots ampliar la classe amb mètodes privats. Segueix estrictament la definició de la classe de l’enunciat.
Input
34 # #
Output
[34] \__# \__# 34
Input
x # #
Output
[x] \__# \__# x
Input
log 3 # # #
Output
[log] \__# \__[3] \__# \__# log(3)
Input
* 2 # # pt # #
Output
[*] \__[pt] | \__# | \__# \__[2] \__# \__# (2*pt)
Input
+ 2 # # * 3 # # y # #
Output
[+] \__[*] | \__[y] | | \__# | | \__# | \__[3] | \__# | \__# \__[2] \__# \__# (2+(3*y))
Input
+ sqrt 2 # # # * 3 # # y # #
Output
[+] \__[*] | \__[y] | | \__# | | \__# | \__[3] | \__# | \__# \__[sqrt] \__# \__[2] \__# \__# (sqrt(2)+(3*y))
Input
+ sqrt 2 # # # * - 3 # # # y # #
Output
[+] \__[*] | \__[y] | | \__# | | \__# | \__[-] | \__# | \__[3] | \__# | \__# \__[sqrt] \__# \__[2] \__# \__# (sqrt(2)+(-(3)*y))
Input
log * - z # # # ^ x # # / + sqrt y # # # 7 # # 3 # # #
Output
[log] \__# \__[*] \__[^] | \__[/] | | \__[3] | | | \__# | | | \__# | | \__[+] | | \__[7] | | | \__# | | | \__# | | \__[sqrt] | | \__# | | \__[y] | | \__# | | \__# | \__[x] | \__# | \__# \__[-] \__# \__[z] \__# \__# log((-(z)*(x^((sqrt(y)+7)/3))))