波兰表示(前缀)
对于句子
sum=(10+20)*(num + square);
将其转换为波兰式,运算符号应在其对应的运算数/符号之前,同时去掉括号。“=”的结果是sum,所以“=”在sum前。再看括号,得到"+ 10 20"和"+ num square"。乘号作用于这两个括号内运算后的结果,于是得到"* + 10 20 + num square"。最后结果为
= sum * + 10 20 + num square
逆波兰表示
对于句子
sum=(10+20)*(num + square);
将其转换为逆波兰式,运算符放到两个运算对象的后面(括号整体也当作一个运算对象),同时去掉括号。“=”作用于sum和右边这整条式子,可得开头为“sum“,结尾为”=“。再看括号得到”10 20 +“和”num + square",又因为乘号作用于两个括号整体,所以得到“10 20 + num + square *"。最后结果为
sum 10 20 + num square + * =
三元式
对于句子
sum=(10+20)*(num + square);
将其化为三元式,根据先后顺序先算括号。得到
( +,10,20)
(+,num,square)
对式子一和式子二编号,分别为(1),(2)。
最后得到结果
( +,10,20)
(+,num,square)
(*,(1),(2))
(=,sum,(3))
四元式
对于句子
sum=(10+20)*(num + square);
和三元式比较像。每个四元式最多有三个地址(也可以说是三个变量,即只能A=B+C而不会出现A=B+C+D)。
我们用中间变量来代表两数运算结果,得到
树
对于句子
sum=(10+20)*(num + square);
也很简单,叶子节点为变量,对于包含了“=”的等式来说根节点为”=“,根节点的左子树为“=”左边的结果即“sum”。
比较简单,对树进行先序/后序遍历应能得到波兰/逆波兰式。结果为