1. 程式人生 > >(資料結構)第五章 二叉樹

(資料結構)第五章 二叉樹

二叉樹

資料結構大致分為兩種型別:基於陣列的實現和基於連結串列的實現。

兩種結構的特點:

基於陣列的實現:通過下標或秩,在常數時間內找到目標物件。插入和刪除,需要耗費線性時間。

基於連結串列的實現:藉助引用或位置物件,在常數時間內插入或刪除元素。但需要線性時間,對整個結構進行遍歷查詢。

樹的元素之間並不存在天然的直接後繼和直接前驅關係,樹屬於半線性結構。

樹是一種分層結構,是其本質屬性之一。

5.1 二叉樹及其表示

5.2 編碼樹

5.5 Huffman編碼

資料結構的選取與設計:

(1)用BinTree實現PFC樹

(2)用Vector實現PFC森林

(3)使用點陣圖結構實現二進位制編碼串

構建PFC編碼樹過程:

由每一字元分別構造一棵單節點二叉樹,並將他們視作一個森林。

初始森林中的\sum棵樹將合成一顆完整的PFC編碼樹。

將PFC編碼樹轉譯為編碼表.。

根據待編碼字元快速確定與之對應的編碼串。

平均編碼長度是反應編碼效率的重要指標。

真完全樹:最優編碼樹中的葉節點只能出現於最低兩層

帶權平均編碼長度取作編碼樹的葉節點帶權平均深度。

Huffman編碼演算法

對於字元出現概率已知的任一字符集\sum,都可採用如下演算法構造其對應的最優帶權編碼樹

對應於\sum中的每一個字元,分別建立一棵單個節點的樹,權重為該字元的頻率。這\sum

棵樹構成一個森林。

選取權重最小的兩棵樹,建立一個新節點,並分別以這兩棵樹作為左右子樹,如此將其合併為一棵更高的樹,其權重取作二者權重之和。選取、合併的過程反覆進行,每經過一輪迭代森林中的樹就少了一棵。當最終森林僅包含一棵樹時,它就是一棵最優帶權編碼樹,構造過程隨即完成。

 

 

 

 

 

 

 

 

高效的編碼演算法生成的編碼串應該儘可能短。。