題目大意:
類似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.遇...