首页 > 试题广场 >

a - (b + c) * d + e f 的逆波兰式是

[填空题]

二叉树法

将最终进行的运算符记为根节点,将两边的表达式分别记为左右子树,依次进行直到所有的运算符与数字或字母标在一棵二叉树上。然后对二叉树进行后序遍历即可。

编辑于 2019-09-10 15:07:09 回复(0)

逆波兰式即表达式树的后缀遍历,题中所给的a - (b + c) * d + e / f则为中缀遍历,将中缀表达式转换为后缀表达式满足以下的规则:

  • 读取到操作数(a、b、c...)立即输出;
  • 读取到操作符(-、+、*、()放入栈中;
  • 当读取到右括号时,将栈中的元素弹出输出,直到将左括号弹出;

另外,当入栈如果栈顶的操作符优先级大于当前操作符时,需要将栈顶操作符弹出,优先级如下:* 等于 / 大于 - 等于 +。

特别注意的是:当栈顶元素是左括号时,除非当前的操作符是右括号,否则将不会弹出——可以理解为左括号的操作符非常的低

编辑于 2019-05-18 22:13:29 回复(0)
abc+-d*ef/+
发表于 2020-01-09 16:02:26 回复(0)