前缀转中缀(表达式)

问题描述:

  前缀转中缀示例,允许有多余括号:

    * + 4 2 + 3 6  => ( 4 + 2 ) * ( 3 + 6 ) 

    - + / 3 4 2 5 => (3 /4 + 2) - 5

    - + 3 / 4 2 5 => (3 + 4/2) - 5 

 

思路1(递归):

  1. 从左向右扫描

  2. 遇到操作符,则递归求解,返回新字符串,遇到数字,则直接返回数字串,例如:

    case '*':

      return "(" + exp() + "*" + exp() + ")";  //注意加括号,保证中缀表达式能正确求解

    default:

      return next_str;

 

思路2(树):

  1. 从左向右扫描

  2. 根据操作符,不断构造子树

  3. 中序遍历树,并输出,即可得到中缀表达式

 

转载请注明引用自:

  http://www.cnblogs.com/breakthings/p/4051912.html 

posted @ 2014-10-26 13:42  breakthings  阅读(2660)  评论(0编辑  收藏  举报