add expression tree.
This commit is contained in:
@@ -40,6 +40,16 @@ bottom top
|
||||
|
||||
对这个结论可以利用数学归纳法证明,主要就是对单目运算符和双目运算符进行讨论,这里不再赘述。
|
||||
|
||||
> 表达式树
|
||||
|
||||
可以将中缀表达式和后缀表达式转化为表达式树。
|
||||
|
||||
对于中缀表达式,需要一个操作数栈和操作符栈。按照同样的方法遍历中缀表达式,操作数封装成单个的树节点入操作数栈,操作符按照优先级关系入栈出栈。对于出栈的双目运算符,弹出操作数栈中的两棵表达式树,以该运算符为根节点,两棵表达式树分别作为其左右子树,再将新得到的表达式入栈,如此不断进行下去即可。
|
||||
|
||||
对于后缀表达式,并不需要操作符栈,依序读到操作符,然后按照和中缀表达式同样的操作,即出栈两棵树,构造新树,然后再入栈,即可。
|
||||
|
||||
表达式树的中序遍历即为中缀表达式,后序遍历为后缀表达式。
|
||||
|
||||
## 卡特兰数
|
||||
|
||||
括号匹配问题,栈混洗问题以及异构二叉树的数量问题,都可以归入到卡特兰数的范畴,这里做一个简单的说明。
|
||||
|
||||
Reference in New Issue
Block a user