多叉哈夫曼樹


在學習時,李春葆數據結構一書給出定義,在...二叉樹中,WPL最小的二叉樹稱為哈夫曼樹。該點很容易導致我們認為哈夫曼樹只能是二叉樹。但在刷題過程中,天勤一書寫到哈夫曼樹不一定是二叉樹,有可能是多叉樹

百度百科給出解釋:

哈夫曼樹也可以是k叉的,只是在構造k叉哈夫曼樹時需要先進行一些調整。構造哈夫曼樹的思想是每次選k個權重最小的元素來合成一個新的元素,該元素權重為k個元素權重之和。但是當k大於2時,按照這個步驟做下去可能到最后剩下的元素少於k個。解決這個問題的辦法是假設已經有了一棵哈夫曼樹(且為一棵滿k叉樹),則可以計算出其葉節點數目為(k-1)nk+1,式子中的nk表示子節點數目為k的節點數目。於是對給定的n個權值構造k叉哈夫曼樹時,可以先考慮增加一些權值為0的葉子節點,使得葉子節點總數為(k-1)nk+1這種形式,然后再按照哈夫曼樹的方法進行構造即可。

因此書上定義在做題時會造成思想上的誤差。

題目:若一顆度為m的哈夫曼樹有n個葉子結點,則非葉子結點個數為:

A. n-1

B. [n/m]-1

C. [n-1/m-1]

D. [n/m-1]-1

一般解決該類題型我們只需要舉簡單例子代入看是否符合條件即可,但如果是二叉樹的情況下,會發現A和C兩個選項是一致的,因為二叉樹度m=2恆定。

因此本題只能自行推導,設度為m的結點有nm個,度為0的結點有n個,總結點數為N,N=nm+n。又因為有N個結點的哈夫曼樹有N-1條分支,則m×nm=N-1=nm+n-1,整理只有C選項成立。

說明:哈夫曼樹不一定是二叉樹,有可能是多叉樹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM