用二叉樹處理表示式

2022-08-13 10:54:24 字數 545 閱讀 4357

題目大意:

類似a+b*(c-d)-e/f

基本思路:

遞迴建立表示式樹,優先順序高的在深層次,注意括號,注意結合性,左結合就找優先順序相同的當中在最右邊的;

**如下:

int nc=0

;int

lch[maxn],rch[maxn];

char

op[maxn];

int buildtree(char* s,int x,int

y)

for(int i=x;i)

}if(c1<0) c1=c2;//

找不到括號外的加減號,就用乘除號;

if(c1<0) return buildtree(s,x+1,y-1);//

整個表示式被一對括號括起來;

u=++nc;

lch[u]=buildtree(s,x,c1);

rch[u]=buildtree(s,c1+1

,y);

op[u]=s[c1];

return

u;}

用二叉樹儲存表示式

學習了資料結構的第三章二叉樹後,實驗是用二叉樹來儲存表示式。struct node class binarytree node binarytree getroot binarytree binarytree void binarytree preorder node bt void binaryt...

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

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

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

1 後序表示式求值 後續表示式 逆波蘭式 的特點 沒有括號。求值方法 從前向後掃,遇到運算元壓棧 遇到操作符,從棧中取出2個運算元運算,結果壓棧。最終棧中所剩的數為結果。2 中序表示式求值 我們先來定義運算子的優先順序 從上到下依次公升高 準備2個棧,乙個專門存放運算子,另乙個專門存放運算元。1.遇...