構(gòu)造哈夫曼樹
哈弗曼樹中沒有度為一的節(jié)點(diǎn),是標(biāo)準(zhǔn)的二叉樹,所以有n個(gè)葉子結(jié)點(diǎn)時(shí),需要一個(gè)長度為2n-1的一維數(shù)組存儲(chǔ)哈弗曼樹的結(jié)點(diǎn)。
(1)、n個(gè)葉子節(jié)點(diǎn)只有weight權(quán)值,處理非葉子節(jié)點(diǎn),從ht[i](ht[1]~ht[n-1])中找到ht[i].weight最小的兩個(gè)節(jié)點(diǎn)ht[s1]和ht[s2],這就是Select(int n,int &s1,int & s2,HTNode *ht)函數(shù)完成的功能。
(2)、調(diào)用select函數(shù),并將ht[s1]和ht[s2]作為ht[l]的左右子樹,即ht[s1]和ht[s2]雙親節(jié)點(diǎn)為ht[l],新的根節(jié)點(diǎn)的權(quán)值為其左右子樹權(quán)值之和, ht[l].weight=ht[s1].weight+ht[s2].weight
標(biāo)簽:
樹
節(jié)點(diǎn)
上傳時(shí)間:
2016-06-13
上傳用戶:ztj182002