數據結構3 特殊二叉樹

 

 

1. 排序二叉樹、最優二叉樹、線索二叉樹、平衡二叉樹等是二叉樹的特殊形式,分別有各自的用途,排序二叉樹用於快速查找、最優二叉樹用於無損壓縮編碼、線索二叉樹經過保存結點的前驅後繼信息以方便遍歷、平衡二叉樹經過改進排序二叉樹提升了其總體查找效率。優化

 

2.對於最優二叉樹用於壓縮編碼,很是不解樹是如何用於編碼的。查閱相關文章後有了大概的瞭解,最優二叉樹是帶權路徑長度最短的二叉樹。結點的帶權路徑長度即權值與路徑的乘積。關於其在編碼方面的應用,有一篇博文介紹地比較直觀(http://blog.csdn.net/wo16fafafa/article/details/52420007),好比要傳送內容爲」abc bcd cdd ddd d」的報文,其中字母a,b,c,d出現的次數分別爲1,2,3,7。在數據通訊中,須要將傳送的文字轉換成二進制的字符串,用0,1碼的不一樣排列來表示字符,若是字母只有a,b,c,d四個,能夠用2位二進制編碼,讓00,01,10,11分別表明四位字母。但因爲不一樣字母的使用頻率不一樣,這樣的等長編碼方式會致使流量的浪費,並且現實中字母固然不止4個,因而能夠在設計編碼時,讓使用頻率高的用短碼,使用頻率低的用長碼,以優化整個報文編碼。編碼

 

3. 上面所說的不等長編碼的設計過程也就是霍夫曼樹的構建過程。構建過程爲:a, 當節點序列中的根節點數量多於一個時,從當前節點序列中選擇兩個權值最小的根節點,分別做爲左右子節點,建立新的根節點;b, 從序列中刪除上一步選擇的兩個根節點,將新建立的根節點加入序列。而後重複執行這兩步。前面a,b,c,d的構建過程以下:spa

初始狀態:四個節點,按照權值由小到大排列.net

​第一步:選擇兩個權值最小的根節點,即a,b兩節點,構建新根節點,規定左子節點權值不大於右子節點權值設計

 

 

第二步:按照規則,繼續選擇兩個權值最小的根節點,構建新根節點3d


 

最終構建的霍夫曼樹:blog


 

左分支看做0,右分支看做1,則a,b,c,d對應的編碼爲:a:000   b:001   c:01   d:1排序

整顆樹的帶權路徑長度WPL=1*3+2*3+3*2+7*1=22字符串

而定長編碼的帶權路徑長度=(1+2+3+7)*2=26get

 

參考資料:

http://blog.csdn.net/wo16fafafa/article/details/52420007

https://baike.baidu.com/item/%E5%93%88%E5%A4%AB%E6%9B%BC%E6%A0%91/2305769?fr=aladdin&fromid=1792010&fromtitle=%E6%9C%80%E4%BC%98%E4%BA%8C%E5%8F%89%E6%A0%91

相關文章
相關標籤/搜索