【二叉樹】
二叉樹 = 度為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,其中每個集合又是一棵樹,並稱為這個根結點的子樹。樹的基本術語 結點...