表示式求值 表示式轉二叉樹

2021-09-22 09:01:50 字數 832 閱讀 7285

1、後序表示式求值:

後續表示式(逆波蘭式)的特點:沒有括號。

求值方法:

從前向後掃,

遇到運算元壓棧;

遇到操作符,從棧中取出2個運算元運算,結果壓棧。

最終棧中所剩的數為結果。

2、中序表示式求值

我們先來定義運算子的優先順序:

(+,-

*,/,%

從上到下依次公升高

準備2個棧,乙個專門存放運算子,另乙個專門存放運算元。

1.遇到),那麼退棧計算到(為止.結果壓棧。

2.遇到運算數.那麼壓棧。

3.如果當前運算子優先順序低於棧頂運算子.那麼計算棧頂運算子並將結果壓棧.

4.否則壓棧.

計算帶括號和浮點數的表示式:

將中序表示式轉換成後序表示式(逆波蘭表示式)的演算法:

(1)初始化乙個空的運算子棧

(2)在沒有到達中綴表示式的結尾及沒有發生錯誤的時候,執行以下步驟:

1.獲取表示式中的乙個標記(常數、變數、算術運算子,左括號,右括號)。

2.如果標記是:

i.  乙個左括號,將其壓入棧中

ii. 乙個右括號,連續彈出並顯示棧中的元素,直到遇到乙個左括號,不要顯示這個左括號。(如果直到棧為空還沒遇到乙個左括號,則是乙個錯誤)

iii.乙個運算子,如果棧為空,或者標記具有比棧頂元素更高的優先順序,則將其壓入棧中。否則出並顯示棧頂的元素,接著繼續比較標記和新的棧頂元素。(運算子比左括號的優先順序高)

iv 乙個運算元,顯示它

(3)當到達中綴表示式的結尾時,彈出並顯示棧中的元素直到棧為空為止。

參考**:

字串表示式轉化為二叉樹:

棧 二叉樹 表示式 表示式樹 表示式求值

總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入 輸入...

表示式 表示式樹 表示式求值

總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入輸入分...

中綴表示式轉二叉樹

關於中綴表示式轉二叉樹,其實很簡單,只要記住這幾句話就夠了 就這麼簡單 這樣說可能還有人聽不懂 舉個栗子 a b c d e fa b c d e f a b c d e f從左到右遍歷表示式,找到最後計算的字元 分成3部分 a b c d e f 分為左子樹,根,右子樹 再繼續把每個拆分成三部分,...