關於中綴表示式轉二叉樹,其實很簡單,只要記住這幾句話就夠了
就這麼簡單
這樣說可能還有人聽不懂
舉個栗子
a +b
∗(c−
d)−e
/fa+b*(c-d)-e/f
a+b∗(c
−d)−
e/f從左到右遍歷表示式,找到最後計算的字元 -
分成3部分 a+b*(c-d) , - , e/f , 分為左子樹,根,右子樹
再繼續把每個拆分成三部分,左側a ,+,b*(c-d);右側e,/,f
繼續就這樣拆分成三部分,最終得到一棵完整的二叉樹
中綴表示式轉二叉樹就完成了
建完這棵樹之後求字首和字尾表示式就很簡單了,分別求它前序遍歷和後序遍歷
這棵樹轉中綴表示式只要求中序遍歷(注意求的時候如果當前子樹優先順序比它的父親低,則在子樹外面套乙個括號,具體操作自己根據上面那棵樹自己模擬)
當用字首或字尾表示式轉二叉樹時則更簡單,因為根是運算子,接著用普通的字首字尾表示式轉二叉樹的方法就可以了
二叉樹計算中綴表示式
看到 資料結構 思想與實現 這本書裡5.3的程式 給出的程式是有問題的 敲到vs中,發現右閉括號不能起到作用,例如 輸入 3 5 7,輸出則是38,右閉括號沒有起到作用。自己調了很久,終於修改對了,下面是正確的 include using namespace std class calc struc...
中綴表示式生成二叉樹
中綴表示式生成二叉樹,大概應該有遞規,迭代,和編譯原理中的自頂向下的 分析法等。遞規,迭代的思路每次讀出乙個數字,乙個運算子,比較當前運算子和之前符號的優先順序,進行相關的操作。自頂向下的 分析法,做了下,實在忘記的差不多了,先占個位。以後完成。tree.c include head.h struc...
表示式求值 表示式轉二叉樹
1 後序表示式求值 後續表示式 逆波蘭式 的特點 沒有括號。求值方法 從前向後掃,遇到運算元壓棧 遇到操作符,從棧中取出2個運算元運算,結果壓棧。最終棧中所剩的數為結果。2 中序表示式求值 我們先來定義運算子的優先順序 從上到下依次公升高 準備2個棧,乙個專門存放運算子,另乙個專門存放運算元。1.遇...