2

我正在互联网上寻找将代数表达式转换为二叉树的逻辑。

我只能找到您首先将代数表达式转换为后缀或前缀然后将其转换为二叉树的那些。

我确实尝试了逻辑,但它在所有情况下都不起作用,问题在于选择正确的操作数作为根父节点。我找不到一个通用的逻辑来破解它。

我只是想知道,如果可能的话。

任何指向外部链接或逻辑答案的指针可以让我朝着正确的方向前进?

编辑

是 语法树

所以这个表达式

A+(B-C)*D+E*F

应该翻译成

              |-(+)-|
              |     |
    |---(*)---|     |---(*)---|
    |         |     |         |
|---(+)---|   D     E         F
|         |
|         |
A   |--( - )--|
    |         |
    B          C
4

1 回答 1

-1

我的简单建议是:

  • 解析表达式并像这样分隔它A,+(B-C)*D+E*F.
  • 尝试按变量/操作的数量对这些组进行分组,以便您可以将表达式大致分成两半 - 例如 groupA-(E*F)一组 -A - E*F而另一个是+(B-C)*D. 现在您可以递归地将每个组拆分为节点和叶子。

编辑:

它会导致这样的事情

步骤1:

String left = "A - E*F";
String right = "+(B-C)*D";

第2步:

    |------------(+)---------|
    |                        |
|---(-)---|             |---(*)---|
|         |             |         |
|         |             |         D
A   |--(*)--|      |---(-)---|
    |       |      |         |
    E       F      B         C

当然,这一切意味着你的解析器应该知道操作的顺序

于 2013-08-12T14:44:44.730 回答