將通過二叉鍊錶實現的表示式二叉樹進行輸出,同時計算出結果。
要求:1)二叉樹建立時,使用先序建立;
2)四個運算子包括:+, -, *, /;
3 ) 在輸出時,遇到優先順序問題時,相應的括號也要輸出。
1)遞迴執行下列步驟即可求值:先分別求出左子樹和右子樹表示的子表示式的值,最後根據根結點的運算子的要求,計算出表示式的最後結果。
2)二叉樹的中序遍歷序列與原算術表示式基本相同,但是需要將中序序列加上括號,即當根結點運算子優先順序高於左子樹(或右子樹)根結點運算子時,就需要加括號。。
#include
#include
#include
"cstdio"
#include
using namespace std;
class tree;
class treenode;
treenode(char data1):data(data1),left(null),right(null){}
};class tree
tree(char end1,treenode *p=
null) :root(p),endtag(end1){}
~tree()
bool isempty()
void createtree()
void inorder()
int operator1()
bool see(char op1,char oop2);
};void tree::createtree(treenode *&subtree)
}void tree::destroy(treenode *&subtree)
}void tree::inorder(treenode *subtree)
else
}}int tree::operator1(treenode *subtree)
}else
return0;}
bool tree::see(char op1,char op2)
int main()
棧 二叉樹 表示式 表示式樹 表示式求值
總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入 輸入...
表示式求值 表示式轉二叉樹
1 後序表示式求值 後續表示式 逆波蘭式 的特點 沒有括號。求值方法 從前向後掃,遇到運算元壓棧 遇到操作符,從棧中取出2個運算元運算,結果壓棧。最終棧中所剩的數為結果。2 中序表示式求值 我們先來定義運算子的優先順序 從上到下依次公升高 準備2個棧,乙個專門存放運算子,另乙個專門存放運算元。1.遇...
先綴表示式構建表示式二叉樹
在表示式二叉樹的學習中,有很多有趣的構造其表示式二叉樹的方法,其中先綴表示式構建表示式二叉樹常見有很多都是利用遞迴的方式去構建,但在閱覽的一篇文件中,引出了非遞迴方式構建其表示式二叉樹概念,雖然相對更麻煩,但在其 實現,探索上還是很有意義的.c語言實現 先綴表示式 23 45 如圖,如果從左到右讀取...