部落格作業04 樹

2022-05-29 14:30:17 字數 1719 閱讀 3916

定義lchild,rchild

if 樹的高度為0

endelse

求左子樹的高度

求右子樹的高度

遞迴返回樹的高度

void initexptree(btree &t,string str)  //建表示式的二叉樹

建立棧s1存放數字

建立棧s2存放操作符

將'#'入棧

while 字串不空

if str[i]不是運算子

建立新節點 ,將該節點的左右孩子初始化為空,並將該節點入棧

else

判斷操作符優先順序

若優先順序小,入棧數s2,優先順序一樣,s2棧頂元素出棧

優先順序大,建立新節點並賦值,左右孩子分別取是s1棧頂元素後再入棧s1

while 符號棧不為'#'

建立新節點並賦值,左右孩子分別取是s1棧頂元素後再入棧s1

double evaluateextree(btree t)//計算表示式樹

定義浮點數a,b分別存放左右子樹

遞迴將字元轉為數字

while 樹節點存在

switch(t->data)

case + 返回a+b

case - 返回a-b

case * 返回a*b

case / 如果b為0,輸出 divide 0 error! 否則 返回a/b

定義結構體 

elemtype data;

bintree lchild;

bintree rchild;

bintree recover(elemtype pre,elemtype in,int len)

bintree t

if !len

返回 null;

部落格作業04 樹

在本章樹的學習中,可以說是掌握得特別虛。因為二叉樹的很多操作中都應用到了遞迴,而在上學期學習遞迴的時候就沒有掌握好,很多時候樹的幾個遞迴 會讓我沉思很久才能屢清楚整個過程,然而看懂 和會寫 還是有很大差別的,本次的pta在課本上可以找到很多相關的 情況下還是完成得跌跌撞撞的,更不敢想象如果是沒有遇到...

部落格作業04 樹

遞迴遍歷左右子樹 if 左子樹高度大於右子樹高度 返回左子樹高度 1 否則 返回右子樹高度 1 當bt null,返回0,遞迴呼叫結束 利用函式建樹 樹的左孩子為該節點i的 2i 樹的右孩子為該節點i的 2i 1 左子樹遞迴 bt lchild createbtree str,2 i 右子樹遞迴 b...

部落格作業04 樹

對於樹的遞迴做法看著簡單,自己寫的話很難下手 樹的性質還沒有記牢 運用樹來解題還是有困難,要多加學習 當陣列不空時 判斷是否為運算子不是則 建立新的節點,將此時的字元賦給節點,並將節點入棧 是則判斷該字元與棧頂字元的優先順序 大於則將其入棧 等於將棧頂元素出棧 小於則將棧頂元素賦予根節點,並將棧的接...