大話數據結構第六章 、第七章

*二叉樹

前序遍歷使用遞歸:1.打印根節點2.遞歸遍歷左子樹3.遍歷右子樹(遞歸結束條件:該節點不存在)

中序遍歷使用遞歸:1.遞歸遍歷左子樹2.打印根節點3.遍歷右子樹(遞歸結束條件:該節點不存在)

後序遍歷使用遞歸:1.遞歸遍歷左子樹2.打印根節點3.遍歷右子樹(遞歸結束條件:該節點不存在)

***線索二叉樹

我們對二叉樹以某種次序遍歷使其變爲線索二叉樹的過程稱爲線索化。相當於把一個二叉樹轉換爲一個雙向鏈表

***赫夫曼樹(帶權路徑長度最小的樹)

壓縮文件:使用赫夫曼編碼(左側爲0,右側爲1)

*圖

*****鄰接矩陣

*****鄰接表(和孩子表示法一樣。用一維數組存儲頂點,每個頂點的所有鄰接點用單鏈表存儲)

兩者區別:

 對於一個具有n個頂點e條邊的無向圖
它的鄰接表表示有n個頂點表結點2e個邊表結點
對於一個具有n個頂點e條邊的有向圖
它的鄰接表表示有n個頂點表結點e個邊表結點
如果圖中邊的數目遠遠小於n2稱作稀疏圖,這是用鄰接表表示比用鄰接矩陣表示節省空間;
如果圖中邊的數目接近於n2,對於無向圖接近於n*(n-1)稱作稠密圖,考慮到鄰接表中要附加鏈域,採用鄰接矩陣表示法爲宜。

*****深度優先DFS

*****廣度優先BFS

**最小生成樹(村莊架設通信網絡)

(1)prim算法:先找一個頂點(隨意)放入最小生成樹u中,不停然後找剩餘頂點中到u中頂點權值最小的頂點納入u中,時間複雜度:O(n2)

(2)kruskal算法:首先構造一個只含n個頂點的森林,然後依權值從小到大從連通網中選擇邊加入到森林中,並使森林中不產生迴路,直至森林變成一棵樹爲止,時間複雜度:O(eloge),e爲邊數

https://www.cnblogs.com/skywang12345/p/3711496.html

**最短路徑(兩點之間的最短)

(1)迪傑斯特拉算法:一步一步求出它們之間頂點的最短路徑,然後求得更遠頂點的最短路徑。 O(n3)

(2)弗洛伊德算法:他每次都會選擇一箇中介點,然後,遍歷整個矩陣,查找需要更新的值。 O(n3);用於求所有頂點到所有頂點的最短路徑問題。

https://blog.csdn.net/qq_35644234/article/details/60875818

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章