PTA構造哈夫曼樹

2022-05-03 02:09:13 字數 1195 閱讀 7789

題目

思路通過最小堆模擬哈夫曼樹,權值的計算就是刪除堆中的兩個最小元素,相加,插入最小堆。

平均碼長=所有結點的編碼總長度/所有結點的總頻次

儲存的名字是沒有用處的,用主函式陣列儲存就行。

**:

#include #include 

#include

#define mindata -100000typedef

struct heap *minheap;

struct

heap ;

//最小堆的建立

minheap create (int

n);

//插入

void insert ( minheap h, int

item );

//刪除

intdelete (minheap h);

intmain()

while(1

)

int num = num1 +num2;

insert(h, num);

weight +=num;

}return0;

}//最小堆的建立

minheap create (int

n) //

插入void insert ( minheap h, int

item )

h->elements[i] =item;}//

刪除int

delete (minheap h)

int parent = 0, child = 0

, minitem, t;

minitem = h->elements[1

]; t = h->elements[h->size--];

for (parent=1; parent*2

<=h->size; parent=child)

else

h->elements[parent] = h->elements[child];

}h->elements[parent] =t;

return

minitem;

}

最小堆的建立,插入,刪除,道理和最大堆的操作集類似,就是更改一下判斷條件,複製條件即可。

構造哈夫曼樹 哈夫曼編碼

1.權值越大的節點,距離根越近 2.樹中沒有度為1的節點,這類樹叫正則 嚴格 二叉樹,樹的總節點 2 雙分支結點 1 單分支結點 雙分支結點 3.樹的帶權路勁 wpl 所有葉子結點的帶權長度路勁之和 長度最短。嗶哩嗶哩王卓老師的口訣 構造森林全是根,選用兩小選新樹,刪除兩小添新人,重複23剩單根 1...

哈夫曼樹構造 哈夫曼編碼

一 哈夫曼樹 p189 1.定義 帶權路徑長度 wpl 最小的二叉樹稱為哈夫曼樹 wpl 樹中所有葉子節點的帶權路徑長度之和 帶權路徑長度 從樹根到任意節點的路徑長度與該節點上權值的乘積 2.構造 1 將這n個節點分別作為n課僅含乙個結點的二叉樹,構成森林f 2 構造乙個新節點,從f中選取兩棵根節點...

哈夫曼樹構造

usr bin env python3 coding utf 8 created on fri jul 27 18 08 26 2018 author luogan 樹節點類構建 class treenode object def init self,data self.val data 0 sel...