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
运算符后面紧跟着两个格式良好的表达式。这可以使用递归轻松解析
如果解析树并获取变量,则返回变量。
如果您解析一棵树并获得一个操作符,请将以下两棵树解析为右/左子树