哈夫曼樹 最優二叉樹

2021-08-31 15:41:25 字數 879 閱讀 1429

....差點忘記寫部落格了...

哈夫曼樹 .. 其實就是只利用葉子結點來儲存要用資訊的樹,只不過它在構造的時候就擁有了乙個迷人的特性... 就是wpl(帶權路徑長度)是最小的.. 而且還能用這個樹的來為葉子結點中的資訊進行編碼, 得出來的各個編碼一定不會相同,並且不會產生混淆的情況..

通過哈夫曼樹的特點.實現了根據乙個佇列來建立一棵哈夫曼樹的方法.

/**

* 得到隨機產生的佇列

*/public void setqueue()

system.out.println();

} // 得到佇列

public priorityqueuegetqueue()

// 建樹,while (queue.size()>=2)

public treenode creattree(priorityqueuequeue)

到此.. 哈夫曼樹就建成了. 接下來就是哈夫曼編碼了.這個的實現我用到了遞迴,並且是每個葉結點往回找

/**

* 為每個葉結點編碼,返回字串

* * @param leaf每次傳入乙個葉結點

* @return以字串形式返回每個葉結點的哈夫曼編碼

*/public string tocode(treenode leaf) else if (leaf.getparent().getrchild() == leaf)

} return s;

}

通過這個方法.. 實現對哈夫曼樹中葉子結點進行哈夫曼編碼的

補充個.. 今天讀取檔案中的位元組時..發現0出現的次數是最多的 ... 讀了個162m的檔案.. 0的個數比其他的數出現的次數多了10萬次 ....

哈夫曼樹(最優二叉樹)

給定n個權值作為n的 葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小 所謂樹的帶權路徑長度,就是樹中所有的葉結點 的權值乘上其到根結點的路徑長度 稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹 huffman tree 哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。假設有n個權值,則構造出的...

哈夫曼樹(最優二叉樹)

最優二叉樹 哈夫曼樹 給定n個權值,試構造一棵有n個葉子結點的二叉樹,每個葉子結點帶權為wi。構造出來的二叉樹的形態可以有多個,我們把其中帶權路徑長度wpl最小的二叉樹稱作最優二叉樹或者哈夫曼樹。語言描述 根據給定的n個權值構成n棵二叉樹的集合f 其中每棵二叉樹ti中只有乙個帶權為wi的根結點,其左...

最優二叉樹 哈夫曼樹

哈夫曼樹是一種帶權路徑長度最短的二叉樹,也稱為最優二叉樹。帶權路徑長度 wpl 設二叉樹有n個葉子結點,每個葉子結點帶 有權值 wk,從根結點到每個葉子結點的長度為 lk,則每個葉子結 點的帶權路徑長度之和就是 wpl 如何計算帶權路徑長度?根節點記為第0層,帶權路徑長度 如何構造哈夫曼樹 哈夫曼樹...