将中缀表达式(带括号)转换为二叉树

Hes*_*tig 7 java math tree binary-tree expression

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

除了我在表达式的字符串中读取的部分并将其存储在二叉树中之外,我已完成了赋值所需的所有操作.

我创建了一个名为BinaryTree的类.它唯一的领域是一个名为root的treenode.这个treenode被定义为BinaryTree中的内部类.它有3个字段,一个通用数据字段,以及两个类型为BinaryTree的子节点(左和右).

我很难在一个表达式中定义一个读取算法

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

并将其存储在这样的树中

             /
        ^          2
    *       3
  5   +
     2  3
Run Code Online (Sandbox Code Playgroud)

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

NPE*_*NPE 6

看一下分流码算法.来自维基百科:

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