資料結構 第五章 樹 二叉樹及線索化

2022-06-20 16:27:11 字數 1942 閱讀 6496

【二叉樹】

二叉樹 = 度為2的有序樹,空樹也是一種二叉樹/ 乙個結點(根結點)也是一種二叉樹。

性質:1. 葉子結點的樹 = 度為2 的結點 + 1, 即  n(leaf) = n(node2) + 1

推導過程:

n(all) =n(node2)+ n(node1) + n(leaf) 

n(all) =2n(node2)+ n(node1) + 1  

==>   n(leaf) = n(node2) + 1

2. k層最多有 2k 個結點 

【二叉樹的儲存】

順序儲存: 結構體陣列的形式儲存,適合 滿二叉樹 、完全二叉樹。主要看結點結構體如何定義了。

鏈式儲存:結構體指標鏈放入形式儲存

各自優缺點:參照 線性表 章節

【二叉樹的遍歷】

根據父結點的訪問序列,分為4種:

1)先序遍歷\先根遍歷\前序遍歷,1 訪問 根結點,2 訪問左子樹上的結點,左子樹上的結點訪問完成後,3 訪問右子樹上的結點。

列印結果: a b d e c f

流程圖如下:

2)中序遍歷\中根遍歷,1 訪問左子樹上的結點,左子樹上的結點訪問完成後,2 訪問 根結點,3 訪問右子樹上的結點。

列印結果: d b e a f c 

流程圖如下:

3)後序遍歷\後根遍歷,1 訪問左子樹上的結點,左子樹上的結點訪問完成後,2 訪問右子樹上的結點,3 訪問 根結點。

列印結果: d e b f c a

流程圖如下:

總結,樹的深度遍歷,可以使用遞迴,也可以使用棧+迴圈 來實現。

4) 層次遍歷:

從二叉樹的第一層(根節點)開始,從上至下逐層遍歷,在同一層中,則按照從左到右的順序對節點逐個訪問。在逐層遍歷過程中,按從頂層到底層的次序訪問樹中元素,在同一層中,從左到右進行訪問。

層次遍歷流程圖如下:

【線索二叉樹】

在二叉樹的結點上加上線索的二叉樹稱為線索二叉樹,對二叉樹以某種遍歷方式(如先序、中序、後序或層次等)進行遍歷,使其變為線索二叉樹的過程稱為對二叉樹進行線索化。

樹線索化後,使得樹有了 前驅 後繼結點,樹線性化了。

ltag: 0 pleft 指向左孩子結點, 1 pleft 指向其  前驅 結點

rtag: 0 pright 指向右孩子結點, 1 pright指向其  後繼 結點

根據二叉樹的遍歷順序生成不同的線索二叉樹,分為 先序、 中序、 後序   線索二叉樹。

如下圖:

先序線索化二叉樹 建立流程:

中序線索化,後序線索化流程,參照 中序、後序遍歷 + 上圖紅框部分。

資料結構第五章樹與二叉樹

選擇題 2 1設一棵非空完全二叉樹 t 的所有葉節點均位於同一層,且每個非葉結點都有 2 個子結點。若 t 有 k 個葉結點,則 t 的結點總數是 2分 a.2k 1b.2kc.k 2 d.2 k 1 作者考研真題 單位浙江大學 2 2已知字符集,若各字元出現的次數分別為,則對應字符集中各字元的哈夫...

第五章樹和二叉樹

樹的邏輯結構 在樹中常常將資料元素稱為結點。任意一棵非空樹滿足以下條件 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,除根結點之外的其餘節點被分成m m 0 個互不相交的有限集合t1,t2.tm,其中每個集合又是一棵樹,並稱為根節點的子樹。樹的定義是遞迴的。結點的度 某結點所擁有的子樹的個數 ...

第五章 樹和二叉樹

5.1 樹的邏輯結構 樹的定義 n n 0 個結點的有限集合。當n 0時,稱為空樹 任意一棵非空樹滿足以下條件 有且僅有乙個特定的稱為根的結點 當n 1時,除根結點之外的其餘結點被分成m m 0 個互不相交的有限集合t1,t2,tm,其中每個集合又是一棵樹,並稱為這個根結點的子樹。樹的基本術語 結點...