Как поместить постфиксные выражения в двоичное дерево?
Итак, у меня есть двоичное дерево и постфиксное выражение " 6 2 * 3 /" что такое алгоритм, чтобы положить его на дерево? как,
[/]
/
[*] [3]
/
[6] [2]
1 ответов
чтобы построить дерево из выражения, представьте, что вы оцениваете его напрямую, но строите деревья вместо вычисления чисел. (Этот трюк работает для гораздо большего, чем постфиксные выражения.)
: имейте стек для хранения промежуточных значений (которые являются деревьями) и исследуйте каждый токен слева направо:
- если это число, превратите его в листовой узел и нажмите на него в стеке.
- если это оператор, pop два элементы из стека, создайте узел оператора с этими дочерними элементами и нажмите новый узел в стеке.
в конце, если выражение правильно сформировано, то у вас должно быть ровно одно дерево в стеке, которое является всем выражением в форме дерева.