#include
#include
#include
#include
#include
using
namespace std;
typedef
struct node
;vector> nodes;
//表示結點的指標組
double char_number =0;
//每個字元平均花費的編碼長度
const
int char_num =6;
int data[char_num]=;
string str[char_num]=;
bool
cmp(node* v1, node* v2)
//重定義比較引數
void
init_vector
(int n)
;//初始化含有指標是陣列
node*
creat_tree
(int n)
;//建立哈夫曼樹
void
print
(node* tree, string name)
;//輸出編碼
intmain()
//主函式
void
init_vector
(int n)
sort
(nodes.
begin()
, nodes.
end(
), cmp);}
node*
creat_tree
(int n)
return nodes[0]
;}void
print
(node* tree, string name)
print
(tree-
>left, name +
"0")
;print
(tree-
>right, name +
"1")
;}
哈夫曼編碼實現
define huffmancode char typedef struct node huffmantree struct node 葉節點為n的哈夫曼樹有2 n 1個節點 用 1表示當前parent未被訪問 huffmantree createhuffmantree int wet,int n ...
哈夫曼編碼 哈夫曼樹
1.定義 哈夫曼編碼主要用於資料壓縮。哈夫曼編碼是一種可變長編碼。該編碼將出現頻率高的字元,使用短編碼 將出現頻率低的字元,使用長編碼。變長編碼的主要問題是,必須實現非字首編碼,即在乙個字符集中,任何乙個字元的編碼都不是另乙個字元編碼的字首。如 0 10就是非字首編碼,而0 01不是非字首編碼。2....
哈夫曼樹 哈夫曼編碼
定義從a結點到b結點所經過的分支序列為從a結點到b結點的路徑 定義從a結點到b結點所進過的分支個數為從a結點到b結點的路徑長度 從二叉樹的根結點到二叉樹中所有結點的路徑長度紙盒為該二叉樹的路徑長度 huffman樹 帶權值路徑長度最小的擴充二叉樹應是權值大的外界點舉例根結點最近的擴充二叉樹,該樹即為...