给定表达式树时创建String表达式

时间:2016-10-28 01:43:16

标签: java tree binary-tree expression-trees

在给定表达式树时,我无法创建String表达式。如果我的表达式树看起来像这样(在输出控制台中):

(*(+(5)(-(2)(3)))(6))

如何创建一个方法来创建一个正常格式的表达式?例如,像这样:

(2 - 3 + 5) * 6

我是否应该使用实际的表达式树或表达式树的String方向(如上所示:(*(+(5)( - (2)(3)))(6)))。< / p>

2 个答案:

答案 0 :(得分:0)

您应该使用前缀来中缀转换算法。

这是因为你的表达式树字符串是前缀形式,你希望它以中缀形式。

您可以删除输入字符串中的所有大括号。这样会更容易。

答案 1 :(得分:0)

关于我,我建议你阅读这些文件。

调车场算法:https://en.wikipedia.org/wiki/Shunting-yard_algorithm

这个算法是根据“优先权”进行“令牌”堆叠,例如,括号之间的函数首先出现。至于那些阅读这些:

  

https://en.wikipedia.org/wiki/Order_of_operations

     

http://introcs.cs.princeton.edu/java/11precedence/(这个特定于编程)

我希望我有所帮助。

祝你有个愉快的一天。 :)