表达式的二叉树表示

本文主要描述了三方面内容:

  1. 表达式的二叉树表示
  2. 如何求前缀表达式、中缀表达式、后缀表达式
  3. 如何利用后缀表达式求值。

构造二叉树

对于中缀表达式(e1)OP(e2),令根结点值为OP,左子树为e1,右子树e2,e1与e2递归。

正常单从一个中缀表达式是获得的二叉树是不唯一的。

如:1+2*(3-4)-5/6即( (1)+( (2)*(3-4) ) )-((5)/(6)),所对应的二叉树为如下。
表达式的二叉树表示

求前、中、后缀表达式

前缀表达式/波兰式

对应二叉树的先序序列:-+1*2-34/56
前缀表达式又称为波兰式

中缀表达式

对应二叉树的先序序列:1+2*3-4-5/6

后缀表达式/逆波兰

对应二叉树的先序序列:1234-*+56/-
后缀表达式又称为逆波兰

根据后缀表达式可直接求值(不用考虑优先级),但求后缀式过程中需用优先级。算符优先法实际在执行过程中隐含形成的逻辑结构就是一颗树。

后缀表达式求值算法

  1. 将后缀表达式从左到右依次读取
  2. 如果读到数字直接入栈
  3. 如果读到运算符,则将栈顶的两个数字出栈,和此运算符做运算,再将计算的结果压入栈中。(注意:先入栈的数为减数,后入栈的数为被减数)
  4. 重复上述步骤,最终的运算结果就存在栈里。

表达式的二叉树表示

相关文章: