关于 堆的应用前后缀表达式

就看后缀表达式,后缀表达式是符号在后面,从左向右看,遇到符号读左边两个数,这个结果也是个数位置不动,可以根据这个来算表达式的值,前后缀表达式都没有括号。还可以根据后缀表达式来建二叉表达式树,这个树的定义就是,树根是运算符,叶子是数,左右子树定义一样,递归定义。算就可以递归算,先左子树,在右子树,然后读根,算出来。

那么如何推后缀表达式呢,先得到中缀表达式就是通常的,然后建两个栈,一个作为运算符栈,一个作为数字栈,左到右扫一遍,数字入数字栈,运算符入运算符,如果是左括号直接入,遇到右括号则把之间的所有出栈,入栈到数字栈,其他情况对于运算符栈,要入栈的运算符优先级大于栈顶元素则入,(因为后缀的从左向右读的原因)直到扫到最后边,最后把运算符出栈直到空,并且全部入栈到数字栈,出栈即可。

 

posted @ 2017-11-08 19:24  winter(is&so)long  阅读(155)  评论(0编辑  收藏  举报