讓程式設計改變世界
change the world by program
我們這次換個角度來考慮,由於樹中每個結點可能有多棵子樹,可以考慮用多重鍊錶來實現。
就像我們雖然有計畫生育,但我們還是無法確保每個家庭只養育乙個孩子的衝動,那麼對於子樹的不確定性也是如此。
1. 右圖中,樹的度為( )
2. 如果我們用「孩子表示法」,聰明的魚油可以想出多少種可行方案?
這裡我們不限制大家的答案,小甲魚給出三個參考的方案,先來看下方案一:根據樹的度,宣告足夠空間存放子樹指標的結點。
缺點十分明顯,就是造成了浪費!
針對方案一的缺點,我們有了方案二:
這樣我們就克服了浪費這個概念,我們從此走上了節儉的社會主義道路!但每個結點的度的值不同,初始化和維護起來難度巨大吧?
難倒沒有更好的了?請看下邊架構:
那只找到孩子找不到雙親貌似還不夠完善,那麼我們合併上一講的雙親孩子表示法:
說了這麼多,我們一起來把**落實起來吧!
最後還有一款是孩子兄弟表示法,構造方式也是大同小異,就交給大家課後去思考啦。
**:
資料結構與演算法4 樹的基本儲存結構
樹的儲存結構主要由雙親表示法和孩子表示法,以及它們的各種改造版本。雙親表示法 雙親表示法是指在每個節點中表示它的父節點的位置。整個樹的節點作為乙個陣列或鍊錶存放。雙親表示法 typedef struct node typedef struct tree 孩子表示法 孩子表示法是指給每個節點加上孩子的...
樹的儲存結構 資料結構和演算法41
讓程式設計改變世界 change the world by program 不好意思哈,這節課又需要大家搞腦子了。對於知識,你理解的越多,需要記住的就越少!上節課我們簡單的介紹了樹結構的強大,這節課我們來關心一下如何在記憶體中安排樹這種結構的存放。說到儲存結構,就會想到我們前面章節講過的順序儲存和鏈...
資料結構與演算法12 樹和樹的儲存結構
這是本次學習的第二個資料結構 樹。之前我們一直討論的是一對一的線性結構,無論是線性表也好,棧和佇列也罷,都是2p模式。可是現實生活中,3p 4p等現象比比皆是,例如乙個年輕的媽媽生了4個孩子,而每個孩子都不像他們的爸爸,那麼這類情況我們用線性結構的形式就不足以描述了!所以我們需要研究這種一對多的資料...