У меня есть два стека, один с операндами, другой с операторами. Моя проблема заключается в том, чтобы превратить эти два стека в двоичное дерево.
Например, выражение (2+3)*(4-3)
будет переведен в постфикс (например, 24+43-*
), а затем помещен в два стека
3442
и *-+
будут стеки (с вершинами 3 и * соответственно).
Теперь с этими стеками мне нужно сформировать двоичное дерево, подобное
*
+ -
2 3 4 3
Есть ли способ сделать это рекурсивно?
Прямо сейчас у меня есть такой алгоритм:
Создать корень дерева, присвоить значение корня первому оператору в стеке операторов. Установите правый и левый указатели на ноль.
Создать правый узел, назначить значение следующего оператора, если он существует, если не назначить ему операнд. Затем сделайте то же самое для левого узла.
Моя проблема в том, чтобы сделать это рекурсивным или заставить его обрабатывать множество различных случаев.
Спасибо за вашу помощь.