C 哈夫曼樹構造字串編碼

2021-10-09 08:37:18 字數 1642 閱讀 9717

構建abbcccdddd的哈夫曼樹,並寫出最後編碼的二進位制串。

1.統計字元的頻次

a:1  b:2  c :3  d:4
2.根據權重實現報文如下轉換

a 100

b 101

c 11

d 0

3.構建字典

字元 	a 	 b    c  d

編碼 100 101 11 0

4.c#**

結果為 1101111111010100000

using system;

using system.collections;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

class

program

else

} hs_names.

orderbydescending

(v =

> v.value)

.orderbydescending

(t =

> t.key)

.todictionary

(t =

> t.key, v =

> v.value)

;string streat =

"left"

; tree tree =

newtree()

;int i =0;

foreach

(keyvaluepair<

string

,int

> hs_name in hs_names)

traaall

(tree,

ref hs)

;string write ="";

foreach

(char name in names)

console.

writeline

(write)

; console.

readline()

;}public

static

void

addtree

(ref tree tree,

string name,

int nub,

refstring streat,

int i)

else

}else

else}}

public

static

void

traaall

(tree tree,

refhashtable hs)

else

traaall

(tree.left,

ref hs);}

if(tree.right !=

null

)else

traaall

(tree.right,

ref hs);}

}}}

構造哈夫曼樹 哈夫曼編碼

1.權值越大的節點,距離根越近 2.樹中沒有度為1的節點,這類樹叫正則 嚴格 二叉樹,樹的總節點 2 雙分支結點 1 單分支結點 雙分支結點 3.樹的帶權路勁 wpl 所有葉子結點的帶權長度路勁之和 長度最短。嗶哩嗶哩王卓老師的口訣 構造森林全是根,選用兩小選新樹,刪除兩小添新人,重複23剩單根 1...

哈夫曼樹構造 哈夫曼編碼

一 哈夫曼樹 p189 1.定義 帶權路徑長度 wpl 最小的二叉樹稱為哈夫曼樹 wpl 樹中所有葉子節點的帶權路徑長度之和 帶權路徑長度 從樹根到任意節點的路徑長度與該節點上權值的乘積 2.構造 1 將這n個節點分別作為n課僅含乙個結點的二叉樹,構成森林f 2 構造乙個新節點,從f中選取兩棵根節點...

哈夫曼樹編碼 字串

資料有一種結構叫做二叉樹,即每個節點至多含有兩個子樹,左子樹和右子樹。生活中類似樹結構的東西有很多,如 生活中的族譜,計算機編碼!對於給定n個權值作為n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹。哈夫曼樹可以用來編碼資料,如 將字串形式的資料編碼為...