Я создаю программу, в задачу которой входит преобразование математического выражения, такого как (2+4)*(4/3)
, в двоичное дерево, а затем манипулирование им.
Во-первых, при разборе я превратил строку в два стека, операнды и операторы.Как я могу определить, каким должен быть корень, учитывая, что в моем примере выше дерево должно выглядеть так:
*
/ \
+ /
/\ /\
2 4 4 3
Обратите внимание, что корнем является *, который является самым внешним операндом.Но в моем стеке операндов это выглядит так:
/
*
+
И могут быть случаи, например (2+4+3)*4
или 2*((4+1)/3)
.
Как определить, какой операнд должен быть корнеммое двоичное дерево?