【发布时间】:2015-04-28 18:14:37
【问题描述】:
我正在手工绘制表达式树,但我一直遇到一个我不明白的问题。
我对表达式树的理解,这可能是错误的,你选择一个根,制作树,然后如果你遍历树的前序、中序或后序,那就是对应的——修复你会得到的表达。
所以,如果我有...
中缀:
A + B + C - D
前缀表达式看起来像:-++ABCD
后缀表达式看起来像:AB+C+D-
我的树看起来像这样......
+
/ \
+ -
/ \ / \
A B C D
现在,我假设您选择最明显的任何根并相应地制作树,所以我选择中间的+ 运算符。当我按顺序遍历树时,它会产生正确的表达式。
但是,当我预订时,答案是:++AB-CD 这是不正确的。后缀也不正确,在后序遍历树时答案是AB+CD-+。
我犯了什么错误?
是我选择的根吗? 我从根及其后续孩子创建孩子的方法? 还是使用中缀表达式树不能总是找到后缀和前缀表达式?
【问题讨论】:
标签: binary-tree expression-trees prefix postfix-notation infix-notation