0.前言
上一篇我们主要介绍了二叉树的定义和相关规则,考试中有经常出现类似于“中缀表达式转后缀”,“前缀表达式转后缀”等。如果能画出唯一的二叉树那么便根据二叉树的结构之间求解即可,有些情况很难直接画出二叉树。还有通过加括号的方式进行求解,还有以下利用栈的这方法求表达式。
1.中缀转后缀
规则:
①从左往右遇到操作数直接输出
②遇到操作符,放入栈中
③遇到左括号,入栈
④遇到右括号,出栈(直到遇到左括号,左括号只弹出不输出)
⑤遇到其他操作符,弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈
⑥最终将栈中元素依次输出
**例如:**a+bc+(de+f)*g
方法:画图或画表
读入字符 | 栈内(底->顶) | 栈外 | 说明 |
---|---|---|---|
a | 空 | a | (1)操作数,直接输出 |
+ | + | a | (2)操作符,入栈 |
b | + | ab | (3)操作数,直接输出 |
* | +* | ab | (4)操作符,入栈(栈内没有优先级高于当前符合的) |
c | +* | abc | (5)操作数,直接输出 |
+ |