将公式解析为二叉树

时间:2014-12-07 00:29:44

标签: algorithm tree logic

我正在尝试编写一个Java程序,它可以从给定的公式生成二进制树,如:

3 - 7 * 5 要么 a - > (b v b)< - >克

我已经尝试过Shunting-yard-Algorithmus算法,这里提到:

Algorithm for parsing first order logic formulas

我已经理解了。因此,从给定的公式中编写反向波兰表示法我没有问题。我仍然不知道这应该如何帮助我从中生成一棵树。

1 个答案:

答案 0 :(得分:0)

如何从RPN生成树?它与评估RPN没什么不同:你有一堆值,最初是空的,你从左到右线性地读取RPN。读取值时,将其全部推送到堆栈。读取运算符时,弹出适当数量的值,使用运算符创建节点,然后将nide推入堆栈。如果一切顺利,当您读取整个RPN表达式时,堆栈上有一个节点,它是AST的根。

现在,分流码算法从左到右线性地产生RPN表达式。如何将这两种算法粘合在一起,避免创建临时向量来保存RPN?希望答案非常明显。