#1.本章學習總結 ##1思惟導圖
數組
##2.談談你對樹結構的認識及學習體會:安全
這一段時間學了樹(二叉樹),感受樹的內容很難,內容比較難弄懂,因此仍是得花時間去理解,總之要學起來真的不容易。在老師的課上跟着老師走對於樹概念和一些操做有了必定的理解(實際上理解透的卻沒有),本身下來實操代碼仍是對於我來講有點難不會作。樹有二叉樹,哈夫曼樹等等的特殊結構的樹,遍歷的方式也是多種多樣(中序遍歷,先序遍歷、後序遍歷、層次遍歷)。在樹這一章,由於要建樹遞歸的用法真的是太常見了因此是重中之重,遞歸方面的內容,只能硬背下來了。數據結構
#2.PTA實驗做業 ##2.1.題目1:函數
7-1 還原二叉樹 (25 分)學習
###2.1.1設計思路(僞代碼)設計
函數聲明:int Cnt(char *preorder, char *inorder, int n); int main { 分別定義兩個字符型數組 preorder,inorder; int N; 將題目的先序,中序字符串輸入; 調用函數Cnt返回二叉樹高度的值 retur你0; } Cnt(char *preorder, char *inorder, int n) { if二叉樹爲空就返回0; 定義循環變量i,定義變a,b; for (i=0至n) 若是先序數組的第一個元素與中序數組的第i個; 運用遞歸的思想逐個元素對應; 計算並返回樹的高度
###2.1.2代碼截圖3d
###2.1.3本題PTA提交列表說明code
A:編譯錯誤 B:一開始函數遞歸的方法錯了 B:返回的a,b值運算出錯blog
##2.2題目2:遞歸
7-3 jmu-ds-二叉樹層次遍歷 (25 分)
###2.2.1設計思路(僞代碼)
運用編譯更安全的csting類,和隊列容器 定義樹的數據結構,節點數據data,左右孩子left,right; 定義建樹函數和等級函數; int main { 定義隊列que,變量i,wpl=0,字符型數組str; 判斷樹組爲空,cout<<NULL; 調用建樹和等級函數; } BinTree建樹 { new 空間 if(沒到數組尾而且左孩子爲#) 樹的葉子節點置爲 NULL; else 遞歸建樹 if(沒到數組尾而且右孩子爲#) 樹的葉子節點置爲 NULL; else 遞歸建樹 } LevelTraversal層次遍歷 { int flag=0; BT入隊 while(隊不爲空) 若是出隊分別對應樹的左右孩子,則入隊; 由flag的變化控制格式輸出樹的沒一層節點數據 }
###2.2.2代碼截圖
###2.2.3本題PTA提交列表說明
A:部分正確緣由 B:一開始建樹沒有把左右孩子的空狀況考慮徹底 B:在層次遍歷時少了出隊要pop()
##2.3.題目3:
7-4 jmu-ds-二叉樹葉子結點帶權路徑長度和 (25 分)
###2.3.1設計思路(僞代碼)
運用編譯更安全的csting類 定義樹的數據結構,節點數據data,左右孩子left,right和記錄等級變量level; 定義建樹函數和wpl函數; int main { 定義變量i,wpl=0,字符型數組str; 判斷樹組爲空,cout<<NULL; 調用建樹和wpl函數; } BinTree建樹 { new 空間 定義t=2*i(運用下標來找樹的層數) cnt++來記錄 if(沒到數組尾而且左孩子爲#) 樹的葉子節點置爲 NULL; else 遞歸建樹 if(沒到數組尾而且右孩子爲#) 樹的葉子節點置爲 NULL; else 遞歸建樹 } CntWPL算wpl函數 { int result = 0; if (非left 和非right) result += 葉子節點數據字符轉換爲數據*bt(每一個節點的帶權值) if (左孩子) result += CntWPL(bt->left); if (右孩子) result += CntWPL(bt->left); 返回result; }
###2.3.2代碼截圖
###2.3.3本題PTA提交列表說明
A:部分正確 B:樹的每一層記錄值多了1 B:沒有考慮到層次爲0,t的值的問題
##3.閱讀代碼
###3.1.題目:二叉樹的最低共同祖先
###3.2 解題思路
公共祖先結點必定在這兩條路徑上,且在最靠後的位 置,在對比倒着挨個查找就能獲得結果。咱們能夠用2個棧來保存這兩個結點的路徑,每當遇到一個結點,咱們就先將這個結點 先入棧,而後查看這個結點是不是 咱們最終要找的那兩個結點,若是是,則當前棧裏的結點順序就是咱們想要的路 徑,結束查找,若是不是,遞歸的去該結點的左子樹和右子樹裏查找,若是都沒 有找到,說明以該子樹沒有咱們想要的結點,天然它確定不在最終路徑上,將其 出棧便可
###3.3 代碼截圖
###3.4 學習體會 對於二叉樹,二叉樹的各個層和葉子節點,本題將二叉樹的節點順序化,這樣的好處就是祖先更加明確; 運用棧和隊列來輔助樹的操做可讓操做更加簡單