在第五章裡,我們學習了樹。樹是n
個結點的有限集合,非空時必須滿足:只有乙個稱為根的結點;其餘結點形成
m個不相交的子集,並稱 根的子樹。
二叉樹的定義:是n≥0
個結點的有限集,它是空集(
n=0)或由乙個根結點及兩棵互不相交的分別稱作這個根的 左子樹和右子樹的二叉樹組成。 二叉樹不是樹的特殊情形,與度數為
2的有序樹不同。 二叉樹的
4個重要性質:1二叉樹上第i
層上的結點數目最多為2^(
i-1)(i≥
1)。2.深度為k
的二叉樹至多有(
2^k)
-1個結點(k≥
1);3在任意一棵二叉樹中,若終端結點的個數為n0
,度為2
的結點數為
n2,則
n0=n2+1
;4具有n
個結點的完全二叉樹的深度為
int(
log2n
)+1.
滿二叉樹是一棵深度為
k,結點數為(
2^k)
-1的二叉樹;完全二叉樹是滿二叉樹在最下層自右向左去處部分結點;
根據訪問結點的次序不同可得三種遍歷:先序遍歷(前序遍歷或先根遍歷),中序遍歷(或中根遍歷)、後序遍歷(或 後根遍歷)。時間複雜度為o(n
)。
利用二叉鍊錶中的n+1
個空指標域來存放指向某種遍歷次序下的前趨結點和後繼結點的指標,這些附加的指標就稱為「線索」,加上線索的二叉鍊錶就稱為線索鍊錶。
樹和森林及二叉樹的轉換是唯一對應的。 轉換方法:1樹變二叉樹:兄弟相連,保留長子的連線。2·二叉樹變樹:結點的右孩子與其雙親連。 3 ·森林變二叉樹:樹變二叉樹,各個樹的根相連。
樹的帶權路徑長度是樹中所有葉結點的帶權路徑長度之和。樹的帶權路徑長度最小的二叉樹就稱為最優二叉樹 (即哈夫曼樹)。哈夫曼樹的應用最廣泛地是在編碼技術上,它能夠容易地求出給定字符集及其概率分布的最優字首碼。哈夫曼編碼的構造很容易,只要畫好了哈夫曼樹,按分支情況在左路徑上寫**
0,右路徑上寫**
1,然後從上到下到葉結 點的相應路徑上的**的序列就是該結點的最優字首碼。
資料結構(第五章)
樹下 第一講一.堆 什麼是堆?在講堆之前,我們先看看什麼是優先佇列。優先佇列 是一種特殊的佇列,從名稱上看,優先,顧名思義,取出的元素是按照一定的優先順序出隊的,而不是元素進入佇列的先後順序。優先佇列的完全二叉樹表示 堆的兩個特性 結構性 用陣列表示的完全二叉樹。有序性 任一結點的關鍵字是其子樹所有...
資料結構筆記 第五章
一.樹的邏輯結構 樹是乙個有限的集合,集合中的元素稱為結點。1 結點的個數為0 稱為空樹。2 結點的個數為1 此節點稱為根節點。3 節點的個數大於1 則除了根結點以外的結點又可分為多個集合,每乙個集合本身其實質上也是一棵樹,並且是根節點的子樹。二.二叉樹的邏輯結構 1 二叉樹的定義 二叉樹首先必須是...
資料結構筆記 第五章
雙親表示法 基本思想 用一維陣列來儲存樹的各個結點 一般 按層序儲存 陣列中的乙個元素對應樹中的乙個 結點,包括結點的資料資訊以及該結點的雙親在數 組中的下標 森林轉換為二叉樹 將森林中的每棵樹轉換成二叉樹 從第二棵二叉樹開始,依次把後一棵二叉樹的根 結點作為前一棵二叉樹根結點的右孩子,當所有二 叉...