Как поместить постфиксные выражения в двоичное дерево?

Итак, у меня есть двоичное дерево и постфиксное выражение " 6 2 * 3 /" что такое алгоритм, чтобы положить его на дерево? как,

          [/]
          / 
        [*]  [3]
        / 
      [6] [2]

1 ответов


чтобы построить дерево из выражения, представьте, что вы оцениваете его напрямую, но строите деревья вместо вычисления чисел. (Этот трюк работает для гораздо большего, чем постфиксные выражения.)

: имейте стек для хранения промежуточных значений (которые являются деревьями) и исследуйте каждый токен слева направо:

  • если это число, превратите его в листовой узел и нажмите на него в стеке.
  • если это оператор, pop два элементы из стека, создайте узел оператора с этими дочерними элементами и нажмите новый узел в стеке.

в конце, если выражение правильно сформировано, то у вас должно быть ровно одно дерево в стеке, которое является всем выражением в форме дерева.