1. 程式人生 > >數據結構中赫夫曼樹

數據結構中赫夫曼樹

數據結構

赫夫曼樹

以下程序在效率上有什麽問題?
技術分享圖片

上述代碼的流程圖:

技術分享圖片

技術分享圖片

如果我們把判斷流程改成下面的樣子,大家思考一下,比起上一種哪個好點?

技術分享圖片

赫夫曼樹的定義與原理:
我們先把這兩顆二叉樹簡化成為葉子節點帶權的二叉樹。
註:樹節點間的連線相關的數叫做權。

技術分享圖片
節點的路勁長度:
——從根節點到該節點的路徑上的連線數。
樹的路徑長度:
——樹中每一個葉子節點的路徑長度之和。
節點帶權路徑長度:
——節點的路徑長度與該節點權值的乘積。
樹的帶權路徑長度:
——WPL(weighted Path Length)是樹中所有葉子節點的帶權路徑長度之和。

構造赫夫曼樹的方法:
1、 在森林中選出根節點權值最小的二叉樹(小在左, 右在大)。

2、 合並兩個選出的二叉樹,增加一個新的節點,作為新二叉樹的根,權值為左右孩子權值的和。
3、 重復上述2步。
技術分享圖片

數據結構中赫夫曼樹