資料結構 哈夫曼樹與哈夫曼編碼

2021-09-29 06:54:10 字數 1879 閱讀 6614

//

#include

"pch.h"

#include

//哈夫曼樹類huffmantree的定義

/*huffman樹結點類treenode宣告*/

template

<

class

t>

class

huffmannode

//建構函式

huffmannode

*getleft

(void

)const

void

setleft

(huffmannode

*l) huffmannode

*getright

(void

)const

void

setright

(huffmannode

*r) t&

getdata()

void

setdata

(const t& item)

intgetweight()

//返回weight域

void

setweight

(const

int w)

//將weight域更新為w};

/*huffman樹類huffmantree宣告*/

template

<

class

t>

class

huffmantree

//建構函式

void

creathuffantree

(t data,

int weight,

int n)

;//建立哈夫曼樹

//其他操作

huffmannode

*getroot()

void

preorder

(huffmannode

*t)const

;void

inorder

(huffmannode

*t)const;}

;//建立huffman樹

template

<

class

t>

void huffmantree

::creathuffantree

(t data,

int weight,

int n)

for(i =

1;i < m;i++

) h[j -1]

= p;}}

intmain()

// 執行程式: ctrl + f5 或除錯 >「開始執行(不除錯)」選單

// 除錯程式: f5 或除錯 >「開始除錯」選單

// 1. 使用解決方案資源管理器視窗新增/管理檔案

// 2. 使用團隊資源管理器視窗連線到源**管理

// 3. 使用輸出視窗檢視生成輸出和其他訊息

// 4. 使用錯誤列表視窗檢視錯誤

// 5. 轉到「專案」>「新增新項」以建立新的**檔案,或轉到「專案」>「新增現有項」以將現有**檔案新增到專案

// 6. 將來,若要再次開啟此專案,請轉到「檔案」>「開啟」>「專案」並選擇 .sln 檔案

1.用堆操作

typedef

struct treenode *huffmantree;

struct treenode

huffmantree huffman

(minheap h)

t=deletemin

(h);

return t;

}

2.給定字串,對字串編碼,使得該字串的編碼儲存空間最少

資料結構 哈夫曼樹 哈夫曼編碼

哈夫曼樹又稱最優樹 二叉樹 是一類帶權路徑最短的樹。構造這種樹的演算法最早是由哈夫曼 huffman 1952年提出,這種樹在資訊檢索中很有用。結點之間的路徑長度 從乙個結點到另乙個結點之間的分支數目。樹的路徑長度 從樹的根到樹中每乙個結點的路徑長度之和。結點的帶權路徑長度 從該結點到樹根之間的路徑...

哈夫曼編碼 哈夫曼樹 (資料結構)

哈夫曼編碼,又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼 vlc 的一種。huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做huffman編碼 有時也稱為霍夫曼編碼 include include inc...

資料結構 哈夫曼樹與哈夫曼編碼

1 路徑 由乙個結點到另乙個結點之間的所有分支共同構成。2 路徑長度 結點之間的分支數目。3 樹的路徑長度 從樹的根結點到其他所有結點的路徑長度之和。4 權 賦予某一實體的值。在資料結構中,實體包括結點和邊,所以對應有結點權和邊權。5 結點的帶權路徑長度 結點與樹的根結點之間的路徑長度與結點權的乘積...