Parsing 二叉树,基于前序构造一棵树

Parsing 二叉树,基于前序构造一棵树,parsing,language-agnostic,data-structures,binary-tree,Parsing,Language Agnostic,Data Structures,Binary Tree,构建一棵有序的树很容易。 但是,假设您应该基于它的前序构造一棵树(例如,++yz++*yz) 很容易看出,+是根,以及如何从那里在左子树中继续。 但是您如何知道何时应该“切换”到正确的子树?通常,顺序被认为是最困难的情况 对于预排序,您只需使用这样的语法即可 expr ::= operator expr expr | var 运算符后面紧跟着两个格式良好的表达式。这可以使用递归轻松解析 如果解析树并获取变量,则返回变量。 如果您解析一棵树并获得一个运算符,请将以下两棵树解析为右/左子树。通常,

构建一棵有序的树很容易。 但是,假设您应该基于它的前序构造一棵树(例如,
++yz++*yz

很容易看出,
+
是根,以及如何从那里在左子树中继续。
但是您如何知道何时应该“切换”到正确的子树?

通常,顺序被认为是最困难的情况

对于预排序,您只需使用这样的语法即可

expr ::= operator expr expr | var
运算符后面紧跟着两个格式良好的表达式。这可以使用递归轻松解析

如果解析树并获取变量,则返回变量。
如果您解析一棵树并获得一个运算符,请将以下两棵树解析为右/左子树。

通常,顺序被认为是困难的情况

对于预排序,您只需使用这样的语法即可

expr ::= operator expr expr | var
运算符后面紧跟着两个格式良好的表达式。这可以使用递归轻松解析

如果解析树并获取变量,则返回变量。 如果您解析一棵树并获得一个操作符,请将以下两棵树解析为右/左子树