【发布时间】:2010-08-11 14:07:33
【问题描述】:
在给定顺序的情况下构造一棵树很容易。
但是,假设您应该根据它的预序构造一棵树(例如+ + y z + * x y z)。
很容易看出+ 是根,以及如何从那里继续在左子树中。
但是.. 你怎么知道什么时候应该“切换”到正确的子树?
【问题讨论】:
标签: parsing language-agnostic data-structures binary-tree
在给定顺序的情况下构造一棵树很容易。
但是,假设您应该根据它的预序构造一棵树(例如+ + y z + * x y z)。
很容易看出+ 是根,以及如何从那里继续在左子树中。
但是.. 你怎么知道什么时候应该“切换”到正确的子树?
【问题讨论】:
标签: parsing language-agnostic data-structures binary-tree
通常,顺序被认为是困难的情况。
对于预购,您只需要这样的语法。
expr ::= operator expr expr | var
一个运算符后跟正好是两个格式良好的表达式。这可以使用递归轻松解析
如果你解析一棵树并得到一个变量,则返回该变量。 如果你解析一棵树并得到一个运算符,则将以下两棵树解析为右/左子树。
【讨论】: