資料結構 六 樹

2021-08-08 16:10:19 字數 2717 閱讀 7130

未完待續

的概念:

子樹

根結點

內部結點

葉結點終端結點

深度高度:根為第一層,根的孩子為第二層,依次類推,樹中結點最大的層數就稱為深度高度

中,如果任意乙個結點的子樹,從左到右都是有次序的,那麼這棵樹被稱為有序樹,反之則為無序樹

森林:由多棵不相交的的集合。

樹的儲存結構:

雙親表示法

雙親域:每個結點設定乙個指向雙親位置的單元。

長子域:每個結點設定乙個指向第乙個結點位置的單元。

右兄弟域:每個結點設定乙個指向右邊兄弟位置的單元。

孩子表示法

方案二:對方案一進行改進,採用鍊錶儲存的方法來指向所有的孩子,並有乙個空間標明當前孩子個數。(此方法對空間利用率提高了,但需要維護各結點的度的數值,在運算上效率還不是最高的)。

方案三:用順序儲存結構來儲存所有的結點,每個結點都有乙個長子域,對比方案二 不同的是,雙親不持有所有孩子的引用,而是讓孩子的上乙個哥哥來持有,這樣在遍歷該結點的所有孩子後,就可以知道該結點的深度為多少。

孩子兄弟表示法:每個節點有兩個指向,乙個指向長子,乙個指向弟弟。這樣做的好處是,假如有乙個結點有三個或三個以上的孩子,用孩子兄弟表示法可以表示為二叉樹的形式,極大地方便操作。

二叉樹

特殊二叉樹:

1.斜樹:所有結點都只有左子樹的二叉樹叫左斜樹,所有結點都只有右子樹的二叉樹叫右斜樹。

2.滿二叉樹:根結點和內部節點都有存在左子樹和右子樹,並且所有的葉結點都在同一層上。

3.完全二叉樹:對於一棵二叉樹,其編號為為i的結點與同樣樣深度的滿二叉樹中編號為i的結點位置相同,則這棵二叉樹稱為完全二叉樹。

可以看出:滿二叉樹一定是完全二叉樹,而完全二叉樹不一定是滿二叉樹。

二叉樹的性質:

性質一:二叉樹的第i層上最多有有2的(i - 1)次方個結點。

性質二:深度為k的二叉樹最多有(2的(k)次方)-1個結點。

性質三:對任何一棵二叉樹t,設有兩個孩子結點數字n2,有乙個孩子結點數字n1,沒有孩子結點數為n0,則,n0 = n2 + 1。(加上分支匯流排來推導)

性質四:具有n個結點的完全二叉樹的深度為(log2n) + 1。

性質五:對於一棵完全二叉樹,若結點2i > n,那麼它沒有左孩子;若2i + 1 > n,那麼它沒有右孩子。

順序儲存結果一般只用於完全二叉樹。

二叉鍊錶:每個結點有乙個資料域和兩個指標域(分別指向左右子結點)。

遍歷二叉樹:

前序遍歷:先列印自己,再遍歷左子樹,再遍歷右子樹/

中序遍歷:先遍歷根節點的左子樹,再列印自己,最後才是右子樹。

後序遍歷:先遍歷左子樹,再遍歷右子樹,最後才列印自己。

層序遍歷:一層一層訪問。

已知前序和後序,是不能確定一棵二叉樹的。

線索二叉樹

二叉鍊錶來表示二叉樹時,有的結點會出現左孩子為空,或右孩子為空的情況,浪費了分配的空間,所以把這些空間都利用起來,用來儲存該二叉樹的前驅和後繼,可以使得在遍歷時大大提高效率。

森林二叉樹的轉換:

樹轉換為二叉樹:參考孩子兄弟表示法

森林轉換為二叉樹:

按照樹轉換成二叉樹的方法,把森林中的樹都轉換成二叉樹,再將其連線起來。

樹與森林的遍歷:

樹的遍歷

先根遍歷樹:先訪問樹的根結點,然後依次先根遍歷根的每棵子樹。

後根遍歷樹:先依次後根遍歷每棵子樹,然後再訪問根結點

森林的遍歷:

前序遍歷:先訪問第一顆樹,然後按照先根遍歷樹訪問該樹,依次訪問所有的樹。

後序遍歷:先訪問第一棵樹,採用後根遍歷方法遍歷每棵子樹,依次遍歷剩下的樹。

赫夫曼樹:

從樹中乙個結點到另乙個結點之間的分支構成兩個結點之間的路徑,路徑上的分支數目稱做路徑長度。

樹的路徑長度就是從樹根到每一結點的路徑長度之和。

帶權路徑長度wpl最小的二叉樹稱做赫夫曼樹。

構建方法,將當前最小的兩個組合在一起,相加當成乙個結點,重複此步驟。

資料結構 六 樹

一直對樹的概念比較模糊,什麼紅黑樹啊,二叉搜尋樹等很多沒有乙個完整的知識體系結構,所以今天準備花一天的時間做乙個總結,力求搞明白樹的全部知識,不同樹之間的體系結構,以及一些常見應用。樹的定義有兩種方式。樹 tree 是包含n n 0 個結點的有窮集,其中 樹也可以這樣定義 樹是由根結點和若干顆子樹構...

資料結構(六)樹

m棵互不相交的樹的集合 優先記錄每個節點的雙親 雙親是必有的,除了根節點 再針對特殊的需要,增加子節點或兄弟節點,重點在於尋找雙親節點,時間複雜度為o 1 該方法結合了陣列和鍊錶,以陣列為基礎儲存結構,每個元素再用鍊錶的方式記錄其雙親節點 以這棵樹為例 把每個結點的孩子結點排列起來 一般是從左往右 ...

資料結構導論 六 樹

結點 有乙個資料元素及若干指向其他結點的分支所組成 度 結點的度 該結點的子樹樹 即分支樹 樹的度 書中結點的度最大值 葉子 終端結點 度為零的結點 非終端結點 度不為零的結點 孩子 子節點 結點的字數根稱為該結點的孩子 雙親 父節點 乙個結點稱為該節點所有子樹根的雙親 祖先 結點祖先指根道此結點的...