資料結構 (六) 樹和二叉樹

2021-09-29 04:40:37 字數 2649 閱讀 3934

這一章真滴是超級超級的難,本來遞迴就不會,現在又把指標和遞迴搞在一起,太難為人了,特別是二叉樹那個地方,前序中序後序層序,非遞迴的方法實在是令人費解。

因此我的部落格也只是羅列了一些主要的知識點,具體的知識還是要看課本的。

樹的遍歷:

樹的前序遍歷操作定義為:

若樹為空,不進行遍歷;否則

⑴ 訪問根結點;

⑵ 按照從左到右的順序前序遍歷根結點的每一棵子樹。

樹的後序遍歷操作定義為:

若樹為空,則遍歷結束;否則

⑴ 按照從左到右的順序後序遍歷根結點的每一棵子樹;

⑵ 訪問根結點。

樹的層序遍歷操作定義為:

從樹的第一層(即根結點)開始,自上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。

樹的儲存結構:

雙親表示法

template

struct

pnode

;孩子表示法:

這 n 個單鏈表共有 n 個頭指標,這 n 個頭指標又組成了乙個線性表。

為了便於進行查詢採用順序儲存儲存每個鍊錶的頭指標。

最後,將存放 n 個頭指標的陣列和存放n個結點的陣列結合起來,構成孩子鍊錶的表頭陣列。

孩子兄弟表示法

完全二叉樹的特點

葉子結點只能出現在最下兩層,且最下層的葉子結點都集中在二叉樹的左部;

完全二叉樹中如果有度為1的結點,只可能有乙個,且該結點只有左孩子。

深度為k的完全二叉樹在k-1層上一定是滿二叉樹。

性質5-1 二叉樹的第i層上最多有2i-1個結點(i≥1)。

性質5-2 一棵深度為k的二叉樹中,最多有2k-1個結點,最少有k個結點。

深度為k且具有2k-1個結點的二叉樹一定是滿二叉樹,

深度為k且具有k個結點的二叉樹不一定是斜樹。

性質5-3 在一棵二叉樹中,如果葉子結點數為n0,度為2的結點數為n2,則有: n0=n2+1。 葉子結點n0=(n + 1)/2

性質5-4 具有n個結點的完全二叉樹的深度為 log2n +1。

2k-1 ≤ n
< 2k

性質5-5 對一棵具有n個結點的完全二叉樹中從1開始按層序編號,則對於任意的序號為i(1≤i≤n)的結點(簡稱為結點i),有:

(1)如果i>1,

則結點i的雙親結點的序號為  i/2;如果i=1,

則結點i是根結點,無雙親結點。

(2)如果2i≤n,

則結點i的左孩子的序號為2i;

如果2i>n,則結點i無左孩子。

(3)如果2i+1≤n,

則結點i的右孩子的序號為2i+1;如果2i+1>n,則結點 i無右孩子。
在完全二叉樹中,結點的層序編號反映了結點之間的邏輯關係。

1.二叉樹第i層至多有2^(k-1)個結點(i>=1)。

2.深度為k的二叉樹上,至多含2^k-1個結點(k>=1)

3.n0 = n2 + 1(度)

4.滿二叉樹:深度為k且含有2^k-1個結點的樹。

5.完全二叉樹:除最後一層外,每一層上的節點數均達到最大值;在最後一層上只缺少右邊的若干結點。

(樹中所含n個結點和滿二叉樹中編號為1至n的結點一一對應)。

6.具有n個結點的完全二叉樹的深度為[log2n] + 1。

7.二叉樹的鏈式儲存表示:二叉鍊錶、三叉鍊錶(增加雙親指標域)、雙親鍊錶、 線索鍊錶。

8.二叉樹的遍歷:前、中、後。

9二叉樹的遍歷演算法:遞迴、非遞迴(棧:現在經過不訪問,一會訪問的結點入棧,棧空結束遍歷)。

10.二叉樹遞迴遍歷引申的演算法:求樹的深度、結點個數、複製二叉樹等。

11.二叉樹相關演算法一定要考慮空樹的情況。

13.表示式和二叉樹的關係: [第一運算元][二元運算子][第二運算元] = [左節點][雙親結點][右結點],

(先中後)綴對應(前中後)遍歷。

14.線索二叉樹:二叉鍊錶中增加兩個標誌域,讓左右兩個指標增加功能:有子結點則指向子結點,沒有則指向前驅和後繼(某種遍歷方式)。

15.樹和二叉樹的相互轉換,樹的葉子結點:左子樹空。 樹、森林與二叉樹的轉換

16.遍歷二叉樹的所有葉子節點。

17.樹的儲存結構

18.哈夫曼樹

19.平衡二叉樹:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。

資料結構 六 樹和二叉樹

樹是一種有層次的資料集合,資料之間的關係是非線性。特點是 除了根節點外其他結點都有唯一前驅,所有結點都有零個或者多個後驅。二叉樹 每個結點至多有兩棵子樹。儲存方式 順序儲存結構 typedef int datatype const int maxsize 1000 指路建立法 struct bitt...

資料結構 樹和二叉樹

第一節 二叉樹的定義與基本操作 定義 我們把滿足以下兩個條件的樹型結構叫做二叉樹 binary tree 1 每個結點的度都不大於2 2 每個結點的孩子結點次序不能任意顛倒。由定義得出 二叉樹的每個結點只能含有0 1或2個孩子,且有左右之分。1 二叉樹的五種基本形態 2 二叉樹性質 性質1 二叉樹第...

資料結構 樹和二叉樹

定義 二叉樹是n n 0 個節點的有限集合,該集合或者為空集 稱為空二叉樹 或者由乙個根節點和兩棵互不相交的 分別稱為根節點的左子樹和右子樹的二叉樹組成。特點 每個節點最多有兩棵子樹 二叉樹是有序的,其次序不能任意顛倒 斜樹 1.所有節點都只有左子樹的二叉樹稱為左斜樹 2.所有節點都只有右子樹的二叉...