專利名稱:哈夫曼樹的存儲方法及利用數(shù)組進行數(shù)據(jù)解碼的方法
技術領域:
本發(fā)明涉及一種數(shù)據(jù)編解碼方法,尤其涉及一種哈夫曼樹的存儲方法及利用數(shù)組進行數(shù)據(jù)解碼的方法。
背景技術:
傳統(tǒng)的哈夫曼編碼(Huffman Coding)采用哈夫曼表格來存儲哈夫曼樹的節(jié)點信息,其中,每個節(jié)點通常具備以下三種信息回傳值(Value)、編碼(Code)和編碼長度(Code Length)。當解碼時,便可根據(jù)編碼值,從哈夫曼表格中查找到對應到的回傳值。由于每個節(jié)點包含三種信息,所以哈夫曼表格中的每一筆資料都需要三個字段來儲存,不利于節(jié)省存儲空間。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種哈夫曼樹的存儲方法,其可利用數(shù)組來存儲哈夫曼樹的節(jié)點信息。鑒于以上內(nèi)容,還有必要提供一種利用數(shù)組進行數(shù)據(jù)解碼的方法,其可利用數(shù)組來查找哈夫曼樹節(jié)點的回傳值,對數(shù)據(jù)進行解碼。一種哈夫曼樹的存儲方法,該方法包括如下步驟根據(jù)廣度優(yōu)先搜索算法,依序建立哈夫曼樹中每個節(jié)點的索引值,其中,每個節(jié)點都包含有一個回傳值;從根節(jié)點開始,根據(jù)該索引值的順序,依次讀取該哈夫曼樹中的每個節(jié)點;及將每個節(jié)點的信息分成第一部分信息和第二部分信息,存儲在一個數(shù)組中。一種利用數(shù)組進行數(shù)據(jù)解碼的方法,該數(shù)組存儲有哈夫曼樹中每個節(jié)點的信息, 每個節(jié)點的信息分為第一部分信息和第二部分信息,該方法包括如下步驟(a)獲取待解碼的比特流;(b)從哈夫曼樹中讀取第一個節(jié)點;(c)判斷該節(jié)點是否為葉子節(jié)點;(d)如果該節(jié)點不是葉子節(jié)點,則依次從該比特流中讀取一比特,根據(jù)該比特的數(shù)值確定下一個搜尋的節(jié)點,然后返回步驟(C),繼續(xù)判斷該下一個搜尋的節(jié)點是否為葉子節(jié)占.(e)如果該節(jié)點是葉子節(jié)點,則根據(jù)該節(jié)點的索引值,從該數(shù)組中查找該節(jié)點的存儲值,從該節(jié)點的存儲值中獲取該節(jié)點的第一部分信息的值,作為該節(jié)點的回傳值;(f)判斷該比特流是否讀取完畢;(g)如果該比特流沒有讀取完畢,則返回步驟(b);(h)如果該比特流讀取完畢,輸出步驟(e)中獲取的每個節(jié)點的回傳值,以完成該比特流的解碼過程。相較于現(xiàn)有技術,所述的哈夫曼樹的存儲方法及利用數(shù)組進行數(shù)據(jù)解碼的方法,其可利用數(shù)組來存儲哈夫曼樹的節(jié)點信息,當解碼時,再利用該數(shù)組來查找哈夫曼樹節(jié)點的回傳值,節(jié)省了存儲空間,提高了哈夫曼編碼的效率。
圖1是本發(fā)明存儲模塊和解碼模塊的應用環(huán)境圖。圖2是本發(fā)明哈夫曼樹存儲方法的較佳實施例的流程圖。圖3是現(xiàn)有技術中的一個哈夫曼表格的示意圖。圖4是根據(jù)圖3中的哈夫曼表格得出的哈夫曼樹。圖5是根據(jù)圖4中的哈夫曼樹進行索引值編號的示意圖。圖6是本發(fā)明存儲每個節(jié)點信息的數(shù)據(jù)結(jié)構(gòu)示意圖。圖7是本發(fā)明利用數(shù)組進行數(shù)據(jù)解碼的方法的較佳實施例的流程圖。主要元件符號說明
權(quán)利要求
1.一種哈夫曼樹的存儲方法,其特征在于,該方法包括如下步驟根據(jù)廣度優(yōu)先搜索算法,依序建立哈夫曼樹中每個節(jié)點的索引值,其中,每個節(jié)點都包含有一個回傳值;從根節(jié)點開始,根據(jù)該索引值的順序,依次讀取該哈夫曼樹中的每個節(jié)點;及將每個節(jié)點的信息分成第一部分信息和第二部分信息,存儲在一個數(shù)組中。
2.如權(quán)利要求1所述的哈夫曼樹的存儲方法,其特征在于,所述將每個節(jié)點的信息分成第一部分信息和第二部分信息,存儲在一個數(shù)組中的步驟包括將每個節(jié)點的第一部分信息的二進制數(shù)值和第二部分信息的二進制數(shù)值合并在一起;及將該合并后的二進制數(shù)值對應的十進制數(shù)值存儲在一個數(shù)組中。
3.如權(quán)利要求2所述的哈夫曼樹的存儲方法,其特征在于,所述將每個節(jié)點的信息分成第一部分信息和第二部分信息,存儲在一個數(shù)組中的步驟包括如果目前節(jié)點為內(nèi)部節(jié)點,則目前節(jié)點第一部分信息的值為目前節(jié)點的左子節(jié)點的索引值與目前節(jié)點的索引值之差,第二部分信息的值為1 ;及如果目前節(jié)點為外部節(jié)點,則目前節(jié)點第一部分信息的值為目前節(jié)點的回傳值,第二部分信息的值為0。
4.如權(quán)利要求2所述的哈夫曼樹的存儲方法,其特征在于,所述第一部分信息的存儲長度為7bits,所述第二部分信息的存儲長度為lbit。
5.一種利用數(shù)組進行數(shù)據(jù)解碼的方法,其特征在于,該數(shù)組存儲有哈夫曼樹中每個節(jié)點的信息,每個節(jié)點的信息包括第一部分信息和第二部分信息,該方法包括如下步驟(a)獲取待解碼的比特流;(b)從哈夫曼樹中讀取第一個節(jié)點;(c)判斷該節(jié)點是否為葉子節(jié)點;(d)如果該節(jié)點不是葉子節(jié)點,則依次從該比特流中讀取一比特,根據(jù)該比特的數(shù)值確定下一個搜尋的節(jié)點,然后返回步驟(c),繼續(xù)判斷該下一個搜尋的節(jié)點是否為葉子節(jié)點;(e)如果該節(jié)點是葉子節(jié)點,則根據(jù)該節(jié)點的索引值,從該數(shù)組中查找該節(jié)點的存儲值,并從該節(jié)點的存儲值中獲取該節(jié)點的第一部分信息的值,作為該節(jié)點的回傳值;(f)判斷該比特流是否讀取完畢;(g)如果該比特流沒有讀取完畢,則返回步驟(b);(h)如果該比特流讀取完畢,輸出步驟(e)中獲取的每個節(jié)點的回傳值,以完成該比特流的解碼過程。
6.如權(quán)利要求5所述的利用數(shù)組進行數(shù)據(jù)解碼的方法,其特征在于,所述數(shù)組存儲每個節(jié)點的第一部分信息和第二部分信息包括將每個節(jié)點的第一部分信息的二進制數(shù)值和第二部分信息的二進制數(shù)值合并在一起;及將該合并后的二進制數(shù)值對應的十進制數(shù)值存儲在一個數(shù)組中。
7.如權(quán)利要求6所述的利用數(shù)組進行數(shù)據(jù)解碼的方法,其特征在于,所述數(shù)組存儲每個節(jié)點的第一部分信息和第二部分信息包括如果目前節(jié)點為內(nèi)部節(jié)點,則目前節(jié)點第一部分信息的值為目前節(jié)點的左子節(jié)點的索引值與目前節(jié)點的索引值之差,第二部分信息的值為1 ;及如果目前節(jié)點為外部節(jié)點,則目前節(jié)點第一部分信息的值為目前節(jié)點的回傳值,第二部分信息的值為0。
8.如權(quán)利要求7所述的利用數(shù)組進行數(shù)據(jù)解碼的方法,其特征在于,所述判斷該節(jié)點是否為葉子節(jié)點的步驟包括如果該節(jié)點的第二部分信息的值為1,則判定該節(jié)點為內(nèi)部節(jié)點;及如果該節(jié)點的第二部分信息的值為0,則判定該節(jié)點為葉子節(jié)點。
9.如權(quán)利要求7所述的利用數(shù)組進行數(shù)據(jù)解碼的方法,其特征在于,所述根據(jù)該比特的數(shù)值確定下一個搜尋的節(jié)點的步驟包括如果該比特的數(shù)值為0,則下一個搜尋的節(jié)點的索引值為(目前節(jié)點的索引值+目前節(jié)點的第一部分信息的值);及如果該比特的數(shù)值為1,則下一個搜尋的節(jié)點的索引值為(目前節(jié)點索引值+目前節(jié)點的第一部分信息的值+1)。
10.如權(quán)利要求9所述的利用數(shù)組進行數(shù)據(jù)解碼的方法,其特征在于,所述目前節(jié)點的第一部分信息的值由以下規(guī)則確定將目前節(jié)點的存儲值對應的二進制數(shù)值右移一位,得到一個右移后的二進制數(shù)值;及將該右移后的二進制數(shù)值轉(zhuǎn)換成十進制數(shù)值即得到目前節(jié)點第一部分信息的值。
全文摘要
一種哈夫曼樹的存儲方法及利用數(shù)組進行數(shù)據(jù)解碼的方法,該存儲方法包括如下步驟根據(jù)廣度優(yōu)先搜索算法,依序建立哈夫曼樹中每個節(jié)點的索引值,其中,每個節(jié)點都包含有一個回傳值;從根節(jié)點開始,根據(jù)該索引值的順序,依次讀取該哈夫曼樹中的每個節(jié)點;將每個節(jié)點的信息分成第一部分信息和第二部分信息,存儲在一個數(shù)組中。利用本發(fā)明可以節(jié)省存儲空間,提高哈夫曼編碼的效率。
文檔編號H03M7/42GK102255617SQ20101017672
公開日2011年11月23日 申請日期2010年5月19日 優(yōu)先權(quán)日2010年5月19日
發(fā)明者盧秋樺, 葉建發(fā), 李忠一, 簡裕峰, 蔡程豐, 鄭山川, 顏宗信 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司