前缀表达式中的运算符结合性

Operator associativity in prefix expression

我正在检查中缀、前缀和后缀转换,我对以下表达式有疑问:

中缀:a+b*d-i
下面的转换是我想到的。但是,下面的前缀表达式与在线转换工具不匹配
前缀:-+a*bdi
后缀:abd*+i-

当我将上述中缀放入某些在线转换器甚至我编写的代码中时,我得到:
中缀:a+b*d-i
前缀:+a-*bdi
后缀:abd*+i-

所以,我的问题是,如果我们要评估上面的前缀,那么我们将在加法之前进行减法,这对我来说似乎不正确,因为应该首先评估运算符关联性加法。这怎么正确?

您在此处指向的在线转换器将中缀转换为前缀的过程不正确:https://www.web4college.com/converters/infix-to-postfix-prefix.php

它说(这是错误的,所以没有人复制它!):

  1. 反转中缀字符串
  2. 转换为后缀
  3. 反转后缀字符串得到前缀字符串

本文作者很困惑,因为:

  • 表达式的后缀或前缀形式是表达式树的后序或前序遍历;和
  • 可以通过反转反向树的后序遍历来获得树的前序遍历...

但是由于左结合性或右结合性,反转中缀表达式不会反转其表达式树。因此,给定的过程会产生错误的答案。

a-b-c TREE      REVERSED TREE       c-b-a TREE

    -                 -                 -
   / \               / \               / \
  -   c             c   -             -   a
 / \                   / \           / \
a   b                 b   a         c   b