哈夫曼樹的c 實現

2021-09-05 21:30:29 字數 729 閱讀 7492

今天看了一下資料結構,乙個練習就是構建哈夫曼樹,就順手用c#寫了乙個。

static

void main(string args)

;var treelist = new

list

();treelist.addrange(from n in numbers

group n by n into g

select

newhuffmantree );

while (treelist.count>1)

);treelist.remove(min[0]);

treelist.remove(min[1]);}}

class

huffmantree

public

huffmantree right

public

int value

public

int degree

public

override

string tostring()

}我用linq很直接的寫出了這段**,寫完後我都覺得有點吃驚:基本上每一步都只用了一句話完成了,並且都是自注釋的,寫得讓人感覺十分流暢。

同時我想起了前幾天發的乙個演算法練習的帖子,雖然用c#可以在20行之內實現,但一大片經驗豐富的程式設計師在4個小時之內用c語言(不能使用任何庫)卻無法完成。我想,對那同乙個題目,用20行和用200行實現的時候的人心情是截然不同的吧。

哈夫曼樹與哈夫曼編碼(C 實現)

1 對給定的n個權值構成n棵二叉樹的初始集合f 其中每棵二叉樹ti中只有乙個權值為wi的根結點,它的左右子樹均為空。2 在f中選取兩棵根結點權值最小的樹作為新構造的二叉樹的左右子樹,新二叉樹的根結點的權值為其左右子樹的根結點的權值之和。3 從f中刪除這兩棵樹,並把這棵新的二叉樹同樣以公升序排列加入到...

哈夫曼樹 C 實現

include using namespace std define maxbit 10 define maxvalue 10000 define maxleaf 100 define maxnode maxleaf 2 1 定義哈夫曼樹編碼型別 typedef structcodetype 定義哈...

哈夫曼樹C 實現

哈夫曼樹的介紹 huffman tree,中文名是哈夫曼樹或霍夫曼樹,它是最優二叉樹。定義 給定n個權值作為n個葉子結點,構造一棵二叉樹,若樹的帶權路徑長度達到最小,則這棵樹被稱為哈夫曼樹。這個定義裡面涉及到了幾個陌生的概念,下面就是一顆哈夫曼樹,我們來看 答。01 路徑和路徑長度 定義 在一棵樹中...