部落格作業04 樹

2022-05-16 20:13:56 字數 1962 閱讀 1063

在本章樹的學習中,可以說是掌握得特別虛。因為二叉樹的很多操作中都應用到了遞迴,而在上學期學習遞迴的時候就沒有掌握好,很多時候樹的幾個遞迴**會讓我沉思很久才能屢清楚整個過程,然而看懂**和會寫**還是有很大差別的,本次的pta在課本上可以找到很多相關的**情況下還是完成得跌跌撞撞的,更不敢想象如果是沒有遇到過的需要用遞迴思想完成的題目我會做得多糟糕。除此之外的二叉樹的線索化和遍歷的過程我還是非常懵逼的,對二叉樹的非遞迴遍歷我也掌握得不清楚。因為錯過了並查集的講解內容,所以對並查集的整個過程目前也是很虛。關於二叉樹的應用,比如說赫夫曼樹和赫夫曼編碼目前只是掌握了手動求解,但是轉換成**來實現的話怕是也會遇到很多的困難。

void initexptree(btree &t,string str)

if(ch不為')') 則op.push(ch);

}}while(op棧不為空)

btree trans(string str,int i)     //順序儲存結構轉為二叉鏈儲存結構

void levelorder(btree bt) //層次遍歷二叉樹

bintree trans(string str,int i) //把二叉樹的順序儲存結構轉成二叉鏈

void get_wpl(bintree b) //二叉樹所有葉子結點的帶權路徑長度和

部落格作業04 樹

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

部落格作業04 樹

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

部落格作業04 樹

void initexptree btree t,string str 建表示式的二叉樹 while op棧內還有運算子 t s棧頂元素 double evaluateextree btree t 計算表示式樹 編譯錯誤 答案錯誤 部分正確 btnode createbtree char pre,c...