首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达式树问题

表达式树问题
EN

Stack Overflow用户
提问于 2015-04-29 02:14:38
回答 1查看 349关注 0票数 0

我正在手工绘制表达式树,我总是遇到一个我不理解的问题。

我对表达式树的理解可能是错误的,即您选择一个根,创建树,然后如果您按顺序、按顺序或后顺序遍历树,这就是您将获得的相应-fix表达式。

所以如果我有..。

中缀:A + B + C - D

前缀表达式将如下所示:-++ABCD

后缀表达式将如下所示:AB+C+D-

我的树是这样的..。

代码语言:javascript
复制
                       +
                     /   \
                   +       -
                 /   \   /   \
                A     B C     D

现在,我假设您选择了看起来最明显的根,并相应地创建了树,因此我选择了中间的+操作符。当我按顺序遍历树时,它会产生正确的表达式。然而,当我按预序遍历时,答案是:++AB-CD,这是不正确的。后缀也是不正确的,在后序中遍历树时,答案是AB+CD-+

我犯了什么错误?

这是我选择的根吗?我从根及其后续子项创建子对象的方法?或者,后缀和前缀表达式不能总是使用中缀表达式树找到?

EN

回答 1

Stack Overflow用户

发布于 2015-04-29 05:11:21

您不能只选择一个根。

如果您认为运算符是left-associative,就像通常对算术表达式所做的那样,那么A + B + C - D等同于((A + B) + C) - D。这表明根是-,正确的树是:

代码语言:javascript
复制
      -
     / \
    +   D
   / \
  +   C
 / \
A   B

遍历此树将给出正确的前缀和后缀表达式。

现在,整数加法是关联的,所以((A + B) + C) - D会给出与(A + B) + (C - D)相同的结果,但它不是同一个表达式。这可能就是让你困惑的地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29926939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档