利用二叉樹計算四則運算表示式

2021-06-05 01:41:01 字數 1084 閱讀 4642

先做個簡單實現,沒有括號,所有數字都是個位數

主要思路如下:

例如有這樣乙個四則運算表示式

2+3*4/2-3+1

先將其分成兩部分的和:

2+3*4/2-3     +    1

+號作為二叉樹的根,左右兩部分分別作為二叉樹根的左右子樹

再依次遞迴的分下去。

最終將其轉化為下面這樣的一棵樹:

計算時,使用二叉樹的後續遍歷,先算左子樹的值,再算右子樹的值,然後根據自己的操作符進行計算,再返回給上一層就行了。

實現**如下:

public class calculator 

public void calculator()

class treenodeelse

if(exc[i]=='+'||exc[i]=='-')

}stringbuilder sbleft = new stringbuilder();

stringbuilder sbright = new stringbuilder();

for(int i=0;i

**如下:

public class calculator

public void calculator()

class treenode

exc=syntaxcheck(exc);

int length = exc.length;

int index=0;

if (hasoperation(exc)) else if(exc[i] == ')')

if (parenthes > 0)

if(exc[i] == '*' || exc[i] == '/')

else if(exc[i] == '+' || exc[i] == '-')

}if(isoperation(exc[index]))

stringbuilder sbleft = new stringbuilder();

stringbuilder sbright = new stringbuilder();

for(int i=0;i

四則運算表示式求值

03 四則運算表示式求值 輸入輸入為四則運算表示式,僅由陣列 四則運算符 左右括號組成,不含空格。假設運算子結果都是整數。輸出輸出這個表示式的值 分析首先我們要搞清楚表示式的定義是什麼 表示式 由乙個或者多個項組成,多個項的表示式由 連線 項 由乙個或者多個因子組成,多個因子由 連線 因子 由 表示...

四則運算表示式求值

表示式求值是關於棧的應用,涉及到中綴與字尾式的轉換,本文關於10以內不帶括號的四則運算。9 3 4 x 3 24 1 x 9 5 9 9 5 x 9 4 6 2 x 3 1 42 思路 遇到數字直接入數字棧。遇到運算子,第乙個運算子直接入符號棧,後面的需要與符號棧棧頂元素比較優先順序。若當前優先順序...

四則運算表示式總結

這兩周完成了第乙個個人專案 四則運算表示式。在整個開發的過程中我有一些收穫也發現了自身的一些問題。下面就分條簡述一下。1 實現隨機生成任意長度的四則表示式 括號 2 實現四則表示式的計算 包括分數 3 實現接收使用者對某四則運算表示式計算的結果並判斷正確性。4 實現結合1 2 3功能的mfc應用程式...