0
後綴表達式轉換爲什麼後綴表達式? 2 + 3 - 4/3 * 3 + 4 我真的很困惑,它如何轉化爲2 3 4 3/3 * - + 4 + ?. 有人可以解釋一下嗎?請解釋postfix表達式如何在這個方程上工作?
在此先感謝
後綴表達式轉換爲什麼後綴表達式? 2 + 3 - 4/3 * 3 + 4 我真的很困惑,它如何轉化爲2 3 4 3/3 * - + 4 + ?. 有人可以解釋一下嗎?請解釋postfix表達式如何在這個方程上工作?
在此先感謝
周圍綴認沽括號顯示操作表彰優先級和結合的順序:
((2 + 3) - ((4/3) * 3)) + 4
現在你可以用它來繪製語法樹:
+
_________/ \_
| |
- 4
_/ \____
| |
+ *
/\ _/ \_
2 3 | |
'/' 3
/\
4 3
現在你可以通過遍歷樹的順序得到postfix:
2 3 + 4 3/3 * - 4 +
還有其他的郵政命令給出正確的答案。例如,通過選擇爲每個交換操作符首先評估左側或右側子樹,可以獲得更多的結果。等價地,可以爲每個交換操作符反轉左右子樹,並始終使用標準的左子元素第一次後序搜索。
您可以通過一個棧機器執行它檢查順序:
Stack
read 2, push 2 [2
read 3, push 3 [2 3
read +, pop 3, pop 2, push 5 (i.e. 2 + 3) [5
read 4, push 4 [5 4
read 3, push 3 [5 4 3
read /, pop 3, pop 4, push 1.33... (i.e. 4/3) [5 1.33...
read 3, push 3 [5 1.33... 3
read *, pop 3, pop 1.33..., push 4 (i.e. 1.33... * 3)[5 4
read -, pop 4, pop 5, push 1 (i.e. 5 - 4) [1
read 4, push 4 [1 4
read +, pop 4, pop 1, push 5 (i.e. 1 + 4) [5
那麼5就是答案,這與中綴評估一致。