第十周 專案2 用二叉樹求解代數表示式

2021-08-10 04:56:27 字數 1267 閱讀 5893

*檔名稱:

*作 者:李佳駿

*完成日期:2023年10月19日

*版 本 號:v1.0

*問題描述:二叉樹求解代數表示式

*輸入描述: 無

*程式輸出:

用二叉樹來表示代數表示式,樹的每乙個分支節點代表乙個運算子,每乙個葉子節點代表乙個運算數(為簡化,只支援二目運算的+、-、*、/,不加括號,運算數也只是一位的數字字元。本專案只考慮輸入合乎以上規則的情況)。請設計演算法,(1)根據形如「1+

2∗3−

4/5

」的字串代表的表示式,構造出對應的二叉樹(如圖),用後序遍歷的思路計算表示式的值時,能體現出先乘除後加減的規則;(2)對構造出的二叉樹,計算出表示式的值。 

請利用二叉樹演算法庫

。 

#include #include #include #include "ghh.h"

//用s[i]到s[j]之間的字串,構造二叉樹的表示形式

btnode *crtree(char s,int i,int j)

//以下為i!=j的情況

for (k=i; k<=j; k++)

if (s[k]=='+' || s[k]=='-')

if (plus==0) //沒有+或-的情況(因為若有+、-,前面必會執行plus++)

for (k=i; k<=j; k++)

if (s[k]=='*' || s[k]=='/')

//以上的處理考慮了優先將+、-放到二叉樹較高的層次上

//由於將來計算時,運用的是後序遍歷的思路

//處於較低層的乘除會優先運算

//從而體現了「先乘除後加減」的運算法則

//建立乙個分支節點,用檢測到的運算子作為節點值

if (plus!=0)

else //若沒有任何運算子,返回null

return null;

}double comp(btnode *b)

}int main()

執行及截圖:

第十周 專案2 用二叉樹求解代數表示式

檔名稱 text.cpp 完成日期 2017年11月7日 版本 問題描述 用二叉樹來表示代數表示式,樹的每乙個分支節點代表乙個運算子,每乙個葉子節點代表乙個運算數 為簡化,只支援二目運算的 不加括號,運算數也只是一位的數字字元。本專案只考慮輸入合乎以上規則的情況 請設計演算法,1 根據形如 1 2 ...

第十周專案2 用二叉樹求解代數表示式

btree.h ifndef btree h included define btree h included define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b...

第十周 專案 2 用二叉樹求解代數表示式

煙台大學計算機學院 檔名稱 xiangmu.cpp 完成日期 2017年12月7日 問題描述 用二叉樹來表示代數表示式 輸入描述 無 輸出描述 後序遍歷結果以及算式結果 用到btree2.h演算法庫 include include include include btree2.h 用s i 到s j...