資料結構筆記(六) 二叉樹

2021-10-03 22:40:07 字數 3243 閱讀 1481

樹:n(n≥0)個結點的有限集。n=0時稱為空樹。在任意一棵非空樹中:有且僅有乙個特定的稱為根的結點;當n>1時,其餘結點可分為m(m>0)個互不相交的有限集t1、t2、…、tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹。

相關概念

·度:結點擁有的子樹數。

·層次:從根開始,根為第一層,根的孩子為第二層。

·深度:(結點)所在的層次數。根結點的深度為1。

·高度:所有結點中深度的最大值。(空樹0)

·結點分類:葉結點(度數為0);內部結點;根結點。

·結點關係:祖先;後代;雙親;孩子;兄弟。

·森林:m(m ≥ 0)棵互不相交的樹的集合。

二叉樹:每個結點度數不超過2。

·有序二叉樹:樹中結點的各子樹看成從左至右有次序,不能交換的二叉樹。

·真二叉樹:不含1度結點的二叉樹。

·滿二叉樹:結點 n ,高度 h ,滿足 n = 2^h - 1。(所有葉子都在同一層)

·斜樹:結點都只有左子樹或右子樹。

·完全二叉樹:具有n個結點的二又樹按層序編號,如果編號為i(1 ≤ i ≤ n)的結點與同樣深度的滿二叉樹中編號為i的結點在二叉樹中位置完全相同。

書的儲存結構表示方法:雙親表示法、孩子表示法、孩子兄弟表示法。

·雙親表示法

資料域指標域

data

parent (firstchild / rightsib)

·孩子表示法:需兩種結點結構(孩子鍊錶的孩子結點;表頭陣列的表頭結點)

資料域指標域

child

next

data

(parent) firstchild

·孩子兄弟表示法

資料域指標域

指標域data

firstchild

rightsib

二叉樹的性質

·第 i 層至多有2^(i - 1)個結點(i ≥1)。

·高度為h的二叉樹至多有2^h - 1 個結點(h ≥ 0)。

·若葉子結點數為 n_0,度數為2的結點數為 n_2,則 n_0 = n_2 + 1。

·n個結點的完全二叉樹,高度為 ⌊lo

g2n⌋

+1⌊ log_2 n ⌋ + 1

⌊log2​

n⌋+1

。若按層序編號,對任一結點 i 都有

①若 i = 1,則結點 i 是二叉樹的根,無雙親;如果 i > 1,則其雙親是結點⌊ i / 2 ⌋。

②若 2i > n,則結點 i 無左孩子(結點 i 為葉子結點);否則其左孩子是結點 2i 。

③若 2i + 1 > n,則結點 i 無右孩子;否則其右孩子是結點 2i + 1。

(順序儲存結構一般只適用於完全二叉樹)

二叉鍊錶

指標域資料域

指標域lchild

二叉樹的遍歷

·前序遍歷:若二叉樹為空,則空操作返回,否則先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹。(中-左-右)

·中序遍歷:若樹為空,則空操作返回,否則從根結點開始(注意並不是先訪問根結點),中序遍歷根結點的左子樹,然後是訪問根結點,最後中序遍歷右子樹。(左-中-右)

·後序遍歷:若樹為空,則空操作返回,否則從左到右先葉子後結點的方式遍歷訪問左右子樹,最後是訪問根結點。(左-右-中)

·層序遍歷:若樹為空,則空操作返回,否則從樹的根結點開始訪問,從上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。

擴充套件二叉樹:將二叉樹每個結點的空指標引出乙個虛結點,其值為一特定值。

線索二叉樹:指向前驅和後繼的指標稱為線索,加上線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹就稱為線索二叉樹。對二叉樹以某種次序遍歷使其變為線索二又樹的過程稱做是線素化。

指標域資料域

指標域lchild

ltag

data

rtag

rchild

·ltag為0時指向該結點的左孩子,為1時指向該結點的前驅;tag為0時指向該結點的右孩子,為1時指向該結點的後繼。

樹、 森林、二叉樹間的轉換

· 樹轉換為二叉樹

①加線:在所有兄弟結點之間加一條連線。

②去線:只保留結點與長子的連線,刪除與其他孩子的連線。

③層次調整:以根結點為軸心,將樹順時針旋轉45°。

·森林轉換為二叉樹

①把每棵樹轉換成二叉樹。

②第一棵二叉樹不動,從第二棵二叉樹開始,依次將後一棵二叉樹的根結點作為前一棵二叉樹根結點的右孩子。

·二叉樹轉換為樹

①加線:若結點存在左孩子,則將該左孩子的右孩子、右孩子的右孩子等所有右孩子都作為該結點的孩子,並將該結點與這些右孩子連起來。

②去線:刪除原二叉樹中所有結點與右孩子的連線。

③層次調整。

·二叉樹轉換為森林

①從根結點開始,若右孩子存在, 則把與右孩子結點的連線刪除,再檢視分離後的二又樹;若右孩子存在,則繼續刪除連線,直到所有右孩子連線都刪除為止,得到分離的二叉樹。

②將每棵分離後的二又樹轉換為樹。

哈夫曼樹:帶權路徑長度wpl最小的二叉樹。

樹形結構遞迴 資料結構(六) 二叉樹的遍歷

本節課我們繼續二叉樹的話題。這節課,先介紹一下二叉樹的幾個相關的性質,這些性質很簡單,但卻是我們進行資料結構的效能分析的基礎。1.在二叉樹的第 i 層上至多有 這個性質是顯然的,第一層有1個,第二層最多隻可能是第1層的兩倍,第三層是第二層的兩倍。2.深度為 k 的二叉樹,最多有 這條性質由 1 可以...

六 二叉樹和紅黑樹

或者是一棵空樹 或者是具有下列性質的二叉樹 它是一棵空樹 或它的左右兩個子樹的高度差 平衡因子 的絕對值不超過1 平衡二叉樹 每個結點的平衡因子都為1 1 0 的二叉排序樹。或者說每個結點的左右子樹的高度最多差1 的二叉排序樹。平衡二叉樹的目的是為了減少二叉查詢樹層次,提高查詢速度 r b tree...

演算法精解(六) 二叉樹

二叉樹是一種將結點按照層次結構組織起來的資料結構,每個結點最多只有兩個與它直接關聯的子節點。類似於細胞 一樣,1 2,2 4,4 8.先序遍歷 1,訪問根節點,2.左節點,3.右節點 屬於深度優先遍歷 中序遍歷 1.訪問左節點,2.根節點,3.右節點 後序遍歷 1.訪問左節點,2.右節點,3.根節點...