Skip to content

Build && evaluate

build 和 evaluate本质上是非常类似的:

一、都与AST相关

"evaluate"的过程其实是对AST的traversal

二、两个方向:

1、自底向上

2、自顶向下

build、construct

如何根据expression构建expression tree?参考文章:

一、wikipedia Binary expression tree

二、geeksforgeeks Expression Tree

reverse polish postfix notation expression、自底向上(使用stack)构建expression tree的示例代码。

三、geeksforgeeks Building Expression tree from Prefix Expression

polish prefix notation expression、递归、自顶向下

evaluate

evaluation of expression tree

一、geeksforgeeks Expression Tree

递归、自顶向下、binary tree-DFS-post order后序-return value

二、geeksforgeeks Evaluation of Expression Tree

递归、自顶向下、binary tree-DFS-post order后序-return value

evaluation of expression

一、infogalactic Polish notation

自右向左、自底向上(使用stack)

二、infogalactic Reverse Polish notation

自右向左、自底向上(使用stack)

三、leetcode 150. 逆波兰表达式求值

Post-order traversal、dependency、stack

表达式树也是树,既然是树,那么它的结构就具备递归性

表达式树**的evaluation一定是**深度优先**的,不可以是**广度优先;因为只有子树的结果都计算出来了,才能够计算得到这些子树的父节点的值;如果从遍历的角度来看的话,它所对应的是深度优先遍历的后序遍历。

Evaluation TODO

geeksforgeeks Evaluation of Expression Tree

stackoverflow Evaluating expression trees

geeksforgeeks Expression Evaluation

geeksforgeeks Stack | Set 4 (Evaluation of Postfix Expression)

codechef Expression Tree Construction and Evaluation

codeproject Binary Tree Expression Solver