Написать программу, которая по заданной формуле строит дерево и производит вычисления с помощью построенного дерева. Формула задана в традиционной инфиксной записи, в ней могут быть скобки, максимальная степень вложенности которых ограничивается числом 10. Аргументами могут быть целые числа и переменные, задаваемые однобуквенными именами. Допустимые операции:+ - * /. Унарный минус допустим. С помощью построенного дерева формулы упростить формулу, заменяя в ней все поддеревья, соответствующие формулам ((х+у)*z), ((x-y)*z), (x*(y+z)), (x*(y-z)) на поддеревья соответствующие формулам (x*z+y*z), (x*z-y*z), (x*y+x*z), (x*y-x*z) соответственно. Знак умножения - звездочка. Программа должна строить дерево по заданой инфиксной форма, затем преобразовывать выражение по заданным формулам и снова строить дерево. Оба дерева должны лежать боком. В программе должны быть комментарии