樹和二叉樹:
二叉樹是樹的一種,還可以有三叉樹、四叉樹、……,以及混合叉樹。
Huffman樹是一類帶權路徑長度最短的二叉樹,在哈夫曼樹中,權值越大的結點離根結點越近。
假設有n個權值,則構造出的哈夫曼樹有n個葉子結點。 n個權值分別設為 w1、w2、…、wn,則哈夫曼樹的構造規則為:
(1) 將w1、w2、…,wn看成是有n 棵樹的森林(每棵樹僅有一個結點);
(2) 在森林中選出兩個根結點的權值最小的樹合併,作為一棵新樹的左、右子樹,且新樹的根結點權值為其左、右子樹根結點權值之和;
(4)重複(2)、(3)步,直到森林中只剩一棵樹為止,該樹即為所求得的哈夫曼樹。
Huffman樹編碼:以根為出發點,依次向下走到各個葉子結點為止。往下走時,選擇走哈夫曼樹的左分支生成0,走右分支則生成程式碼1,根結點到葉子結點路徑上的0、1序列即為相應字元的編碼。
這樣講可能有點抽象,你可以找本書,結合書上的圖來看會更清楚一點。
樹和二叉樹:
二叉樹是樹的一種,還可以有三叉樹、四叉樹、……,以及混合叉樹。
Huffman樹是一類帶權路徑長度最短的二叉樹,在哈夫曼樹中,權值越大的結點離根結點越近。
假設有n個權值,則構造出的哈夫曼樹有n個葉子結點。 n個權值分別設為 w1、w2、…、wn,則哈夫曼樹的構造規則為:
(1) 將w1、w2、…,wn看成是有n 棵樹的森林(每棵樹僅有一個結點);
(2) 在森林中選出兩個根結點的權值最小的樹合併,作為一棵新樹的左、右子樹,且新樹的根結點權值為其左、右子樹根結點權值之和;
(4)重複(2)、(3)步,直到森林中只剩一棵樹為止,該樹即為所求得的哈夫曼樹。
Huffman樹編碼:以根為出發點,依次向下走到各個葉子結點為止。往下走時,選擇走哈夫曼樹的左分支生成0,走右分支則生成程式碼1,根結點到葉子結點路徑上的0、1序列即為相應字元的編碼。
這樣講可能有點抽象,你可以找本書,結合書上的圖來看會更清楚一點。