7

作为 Java 赋值的一部分,我必须获取一个输入算术表达式并将其存储在二叉树中。

除了我在表达式字符串中读取并将其存储在二叉树中的部分之外,我已经完成了分配所需的一切。

我创建了一个名为 BinaryTree 的类。它唯一的字段是一个名为 root 的树节点。这个树节点被定义为 BinaryTree 中的一个内部类。它有 3 个字段、一个通用数据字段和两个二叉树类型的子字段(左和右)。

我很难定义用于读取表达式的算法,例如

(5*(2+3)^3)/2

并将其存储在这样的树中

             /
        ^          2
    *       3
  5   +
     2  3

任何人都可以帮助算法吗?

4

2 回答 2

6

看一下调车场算法。来自维基百科:

在计算机科学中,调车场算法是一种用于解析以中缀表示法指定的数学表达式的方法。它可用于以反向波兰表示法 (RPN) 或作为抽象语法树 (AST) 生成输出。该算法由 Edsger Dijkstra 发明并命名为“调车场”算法,因为它的操作类似于铁路调车场。Dijkstra 在 Mathematisch Centrum 报告 MR 34/61 中首次描述了调车场算法。

于 2012-04-24T18:07:07.620 回答
3

下面是一些用于创建使用两个堆栈的二叉表达式树的 C++ 代码,一个用于操作符,另一个用于操作数。最终,操作数堆栈包含一个元素,即完整的二叉表达式树。

于 2012-12-18T00:41:12.253 回答