給個最簡單的例子,若給定數組[1,2,3,4,5],如何獲得哈夫曼樹?
根據哈夫曼的編碼方法(假設大家都會),可以得到哈夫曼樹如上所示
可以給出偽代碼如下:
Change_Array_To_Huffman(A[n]) { BinaryTree *T[n]; BinaryTree *B; for(i : from 1 to n) { T[i]->data = A[i]; T[i]->left = Null; T[i]->right = Null; } for(i : from 1 to n) { select k1 & k2 as non-empty minimum-data index; B->data = T[k1]->data + T[k2]->data; B->left = T[k1]; B->right = T[k2]; T[k1] = B; T[k2] = Null; } return B; }
偽代碼可自行進行擴展,以上!