我必须将中缀表达式解析为二叉树。
表达式是:
(((x1 + 5.12) ∗ (x2 − 7.68))/x3)
我真的不知道如何解释表达式。有人知道如何处理这个问题吗?
答案 0 :(得分:9)
你的任务并不那么难,首先你应该熟悉notation types然后用表达式解析。
通常,要解析和评估(中缀)表达式,您需要:
读取并标记它,即将每个符号分类为:操作数,操作等。
从中缀转换为二进制表达式树:这通常使用Shunting yard algorithm等算法完成。
创建一个定义操作优先级的语法,并允许严格的 1 表达式评估顺序。
使用中缀表示法编写的表达式稍微难以解析,这就是为什么通常将它们转换为更多“机器友好”版本,如(反向)Polish notation这提供了一些优势其中之一是消除了括号的需要。
所以,正如你所看到的,这大致是全局,你的任务就是其中的一部分。以下是:{{1}}
的二进制表达式树的可视化以下是关于该主题的更多内容以及示例implementation in C++。
1。在你的情况下遵守代数规则。