algorithm - 如何将后缀表达式放入二叉树中?

标签 algorithm tree postfix-notation

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

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

最佳答案

要从表达式构造一棵树,假设您正在直接评估它,但构造树而不是计算数字。 (这个技巧适用于比后缀表达式更多的东西。)

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

  • 如果是数字,则转为叶子节点入栈。
  • 如果它是一个运算符,从堆栈中弹出两个项目,用这些 child 构造一个运算符节点,并将新节点压入堆栈。

最后,如果表达式的格式正确,那么堆栈中应该只有一棵树,它是树形式的整个表达式。

关于algorithm - 如何将后缀表达式放入二叉树中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375904/

相关文章:

c++ - 如何计算 BFS 算法中的移动? (迷宫中的最短路径)

java - 如何保存 Vaadin Tree 容器元素订单?

algorithm - 查找由数组表示的 2 BST 是否同构

python:使用通配符快速查找字典单词*

java - 需要帮助在后缀评估上实现 Java 算法

python - Expogo 的算法如何工作(Google Code Jam 2020 Round 1B)?

查找多个字符串匹配的算法

algorithm - 匹配数百万人 : k-d tree or locality-sensitive hashing?

java - 中缀到后缀表达式中的结合性规则

c - C中后缀运行时错误的中缀