一尘不染

如何将后缀表达式放在二叉树中?

algorithm

所以我有一个二叉树和一个后缀表达式“ 6 2 * 3 /”,将它放在树中的算法是什么?喜欢,

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

阅读 450

收藏
2020-07-28

共1个答案

一尘不染

要从表达式构造树,请假装您直接对它求值,但构造树而不是计算数字。(此技巧比后缀表达式有用得多。)

算法: 有一个堆栈来存储中间值(即树),并从左到右检查每个令牌:

  • 如果是数字,则将其变成叶子节点,然后将其压入堆栈。
  • 如果是运算符,请从堆栈中弹出两个项目,使用这些子元素构造一个运算符节点,然后将新节点压入堆栈。

最后,如果表达式的格式正确,那么堆栈上应该恰好有一棵树,即树形式的整个表达式。

2020-07-28