前缀表达式转中缀表达式
假定有前缀表达式++1*2 3 4 请将它转化为中缀表达式。
利用表达式树:
1.从右到左扫面后缀表达式,一次一个符号读入表达式。
2. 如果符号是操作数,那么就建立一个单节点树并将它推入栈中。如果符号是操作符,那么就从栈中弹出两个树T1和T2(T1先弹出)并形成一颗新的树,该树的根就是操作符
3.它的左、右儿子分别是T1和T2(先出的为左子树,后出的为右子树)。然后将指向这棵新树的指针压入栈中。
1.从右开始都是操作数 4 3 2 放入栈中
2. 遇到操作符 *,取栈中两个元素,先出为左,后出为右如下:
3.操作数1 放入栈中
4.遇到操作符 +,去栈中两个元素,先出为左,后出为右
5.遇到操作符 + 取两个元素,先出为左,后出为右
对上面构造的表达式树,按中序遍历如下:
中缀表达式为:1+2*3+4
本文作者:Euclid·Guisi
本文链接:https://www.cnblogs.com/fangzm/p/13945052.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步