我瞭解如何創建哈夫曼樹,當頻率彼此不同時,但如果少數頻率相同,我將如何繪製該哈夫曼樹:如何生成這個霍夫曼樹(類似於二叉樹)
的哈夫曼樹的簡單解釋是發現here
的哈夫曼樹的數據,我想創建:
Letter Frequency
A 15%
B 15%
C 10%
D 10%
E 30%
F 20%
現在,我開始與這對信兩個最低頻率和D
.
/\
C D
但是下一步會是什麼?因爲我們有A
和B
具有相同的頻率,所以我們選擇哪一個?如果我們選擇其中之一,那麼當選擇第二個時,結構將如何顯示?
如果讓我選擇B
那麼它會是這樣的(除非我是錯的)
.
/\
B .
/\
C D
那這一步之後???
這些可以使用Java和C進行編碼,我試圖在實現它們之前先弄清楚它們是如何工作的。
編輯
我的樹是這個樣子:
___________|_________________
/\ |
/\ |
F E |
/\ |
/ \ |
B A /\
/\
C D
也得到了從網上
你總是選擇兩個最低的頻率,所以你的第二步是錯誤的。您不會選擇CD和B(分別爲20%和15%) - 您選擇A和B(15%和15%)。對於這組特定的頻率,在選擇最低的兩個頻率時絕不會含糊不清。但是,這可能會發生。您可以使用具有不同拓撲結構的多個不同樹的頻率集。但是,它們都具有完全相同的應用頻率的平均位數,並且都是最優的。 – 2012-08-14 15:23:32