在C中将句子表达到二叉树

时间:2016-11-02 21:03:27

标签: c tree expression

我必须将中缀表达式解析为二叉树。

表达式是:

 (((x1 + 5.12) ∗ (x2 − 7.68))/x3) 

我真的不知道如何解释表达式。有人知道如何处理这个问题吗?

1 个答案:

答案 0 :(得分:9)

你的任务并不那么难,首先你应该熟悉notation types然后用表达式解析。

通常,要解析和评估(中缀)表达式,您需要:

  • 读取并标记它,即将每个符号分类为:操作数,操作等。

  • 从中缀转换为二进制表达式树:这通常使用Shunting yard algorithm等算法完成。

  • 创建一个定义操作优先级的语法,并允许严格的 1 表达式评估顺序。

使用中缀表示法编写的表达式稍微难以解析,这就是为什么通常将它们转换为更多“机器友好”版本,如(反向)Polish notation这提供了一些优势其中之一是消除了括号的需要。

所以,正如你所看到的,这大致是全局,你的任务就是其中的一部分。以下是:{{1}}

的二进制表达式树的可视化

enter image description here

以下是关于该主题的更多内容以及示例implementation in C++

1。在你的情况下遵守代数规则。