qq_43412960
2020-04-22 12:59
采纳率: 79.1%
浏览 182

这是一个关于数据结构二叉树遍历的问题

a+b*(c-d)-e/f

的先序是

-+a*b-cd/f

请问这是如何推到出来的呢?
先序,我个人认为是把运算符都放最前面,但是并没有那样,字母中间还放了一些,迷茫,求解

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 小于零 2020-04-22 16:32
    已采纳

    你好呀,这个问题属于 中缀表达式 和 前缀表达式(也称波兰式)的相互转换。
    以下是我的纸质演算过程。

    图片说明
    图片说明

    希望能帮助到你!!!

    点赞 打赏 评论
  • blownewbee 2020-04-22 13:12
    这个问题很简单
    我们用函数调用表示表达式,比如
    int add(int a, int b) { return a + b; }
    int sub(int a, int b) { return a - b; }
    int mul(int a, int b) { return a * b; }
    int div(int a, int b) { return a / b; }
    比如
    1+1
    可以写
    add(1, 1);
    2+3*5可以写
    add(2, mul(3, 5));
    那么
    a+b*(c-d)-e/f
    就是
    sub(add(a, mul(b, sub(c, d))),div(e, f))
    我们把add sub mul div换成 + - * /,去掉括号和逗号
    - + a * b - c d / e f
    就是前缀了
    
    点赞 打赏 评论

相关推荐 更多相似问题