OSDN Git Service
(root)
/
oi-wiki
/
main.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d8eddda
)
feat: 添加表达式树相关
author
Ir1dXD
<sirius.caffrey@gmail.com>
Thu, 1 Nov 2018 14:11:14 +0000
(22:11 +0800)
committer
GitHub
<noreply@github.com>
Thu, 1 Nov 2018 14:11:14 +0000
(22:11 +0800)
docs/basic/expression.md
patch
|
blob
|
history
diff --git
a/docs/basic/expression.md
b/docs/basic/expression.md
index
d3b8249
..
c7ab16a
100644
(file)
--- a/
docs/basic/expression.md
+++ b/
docs/basic/expression.md
@@
-9,6
+9,12
@@
递归的方法是把表达式拆分成如图所示的表达式树,然后在树结构上自底向上进行运算。
![](./images/bet.png)
+表达式树上进行 [树的遍历](/graph/traverse/#dfs_3) 可以得到不同类型的表达式
+
+- 前序遍历对应前缀表达式(波兰式)
+- 中序遍历对应中缀表达式
+- 后序遍历对应后缀表达式(逆波兰式)
+
## 非递归
非递归的方法是定义两个 [栈](/stack/) 来分别存储运算符和运算数。每当遇到一个数直接放进数的栈;每当遇到一个操作符时,要查找之前运算符栈中的元素,按照预先定义好的优先级来进行适当的弹出操作(弹出的同时求出对应的子表达式的值)。