1、第五章主要學習了與樹相關的知識,從二叉樹拓展到一棵普通的樹,再從一棵普通的樹拓展到哈夫曼樹,再從樹拓展到森林的概念。5-1節學習了樹和二叉樹的定義,對節點,根節點,葉子結點,深度,度等概念進行了初步的了解。5-4節了解了與二叉樹相關的一些性質,其中引出了完全二叉樹與滿二叉樹的概念,從這一節開始也正式開始考慮用儲存結構去儲存一棵樹。書本上介紹了順序儲存和鏈式儲存兩種方式,其中順序儲存相對一般的二叉樹的話比較浪費空間,所以一般考慮使用二叉鍊錶的方式進行儲存。
這是二叉鍊錶比較常用的定義方式
typedef struct bitnode
char data;
struct tnode *lch, *rch;
}bitnode, *bitlist;
基於上面的定義,書本介紹了先序建立二叉鍊錶的方式,然後又給出了先序遍歷,中序遍歷,後序遍歷的演算法步驟,也給出了包括計算節點總數,計算深度的演算法。
後面有個線索二叉樹的知識點我還沒有仔細地去看,感覺以後可能會用到,用到再回來補一補。
2、學完了二叉樹,就到樹了。樹的話學習了三種定義的方法,①雙親表示法=>也就是儲存結構裡面包含了父節點的下標; ②孩子表示法=>在指標域中以鍊錶的形式將所有的子結點都連線起來
③孩子兄弟表示法=>採取左孩子右兄弟的方式進行儲存
3、然後的重點就到了哈夫曼樹,在上週的學習中,掌握了構造了哈夫曼樹的方法,同時了解到了最優樹不僅包括用哈夫曼方法構造的樹,也包括了他的同構樹。
4、然後pta作業裡面在做的時候遇到了一些問題,實踐題第二題有個測試點是節點數不同的,之前以為他的意思是節點數不同也可以構成同構樹,但是後來發現不是那麼回事,
樹的同構必須保證節點數量的完全一致。在一些選擇題裡面有一些不太會的,後面查了資料就好了很多了。
最後總結一下:這章的話知識有點多,不過知識點也比較得集中,類似的東西也比較多,借助這一章我感覺我的遞迴思維有了比較好的提公升,然後需要注意的是在申請陣列空間之後一定要記得去**,
還有 bool *fn=new bool[n]()這種定義方式我記住了,不會忘記了。
第五章學習小結
一 小結 1.二叉樹 定義與性質 1 二叉樹有五種基本形態 2 在二叉樹的 第 i 層上至多有 2 i l 個結點 i 1 3 深度為 k 的 二叉樹至多有 2 k 1 個結點 k 1 4 葉子結點數 度為2結點數 1 5 滿二叉樹是完全二叉樹的一種 還有更常見的非完全二叉樹 二叉樹的儲存與遍歷 1...
第五章學習小結
第五章我們學習了新的資料結構,也就是樹。相比較與之前學的內容,我覺得樹更加的複雜。在學習二叉樹的遍歷的過程中,在樹的操作過程中很多重複操作都是要通過遞迴實現的,我對遞迴的思想也更加深刻明了。我們也學習了許多二叉樹的性質,比如 二叉樹的性質 1 二叉樹的第i層上至多有2 i 1 個結點 2 深度為k的...
第五章學習小結
第五章 樹和二叉樹中我學到的 一,基本定義 樹 二叉樹 完美二叉樹 偏二叉樹,節點關係,樹的深度,葉節點等等的定義 二,樹 二叉樹 的基本儲存結構 1 用陣列,適用於滿二叉樹 2 鏈式結構 3 陣列加鍊表式 雙親孩子表示法 如下 tyepdef struct cnodecnode tyepdef s...