(資料結構)第五章 二叉樹
阿新 • • 發佈:2019-01-02
二叉樹
資料結構大致分為兩種型別:基於陣列的實現和基於連結串列的實現。
兩種結構的特點:
基於陣列的實現:通過下標或秩,在常數時間內找到目標物件。插入和刪除,需要耗費線性時間。
基於連結串列的實現:藉助引用或位置物件,在常數時間內插入或刪除元素。但需要線性時間,對整個結構進行遍歷查詢。
樹的元素之間並不存在天然的直接後繼和直接前驅關係,樹屬於半線性結構。
樹是一種分層結構,是其本質屬性之一。
5.1 二叉樹及其表示
5.2 編碼樹
5.5 Huffman編碼
資料結構的選取與設計:
(1)用BinTree實現PFC樹
(2)用Vector實現PFC森林
(3)使用點陣圖結構實現二進位制編碼串
構建PFC編碼樹過程:
由每一字元分別構造一棵單節點二叉樹,並將他們視作一個森林。
初始森林中的棵樹將合成一顆完整的PFC編碼樹。
將PFC編碼樹轉譯為編碼表.。
根據待編碼字元快速確定與之對應的編碼串。
平均編碼長度是反應編碼效率的重要指標。
真完全樹:最優編碼樹中的葉節點只能出現於最低兩層
帶權平均編碼長度取作編碼樹的葉節點帶權平均深度。
Huffman編碼演算法
對於字元出現概率已知的任一字符集,都可採用如下演算法構造其對應的最優帶權編碼樹
對應於中的每一個字元,分別建立一棵單個節點的樹,權重為該字元的頻率。這
選取權重最小的兩棵樹,建立一個新節點,並分別以這兩棵樹作為左右子樹,如此將其合併為一棵更高的樹,其權重取作二者權重之和。選取、合併的過程反覆進行,每經過一輪迭代森林中的樹就少了一棵。當最終森林僅包含一棵樹時,它就是一棵最優帶權編碼樹,構造過程隨即完成。
高效的編碼演算法生成的編碼串應該儘可能短。。