五个权值是 1 2 5 6 7
(1) 从小到大排序 1 2 5 6 7 (这是有序序列)
(2) 每次提取最小的两个结点,取结点1和结点2,组成新结点N3,其权值=1+2=3,
取数值较小的结点作为左分支,结点1作为左分支,而结点2就作为右分支.
(3) 将新结点N3放入有序序列,保持从小到大排序:
N3 5 6 7
(4) 重复步骤(2),提取最小的两个结点,N3与结点5组成新结点N8,其权值=3+5=8,
N3数值较小,作为左分支,而结点5就作为右分支.
(5) 将新结点N8放入有序序列,保持从小到大排序:
6 7 N8
(6) 重复步骤(2),提取最小的两个结点,结点6与结点7组成新结点N13,其权值=6+7=13,
结点6的数值较小,作为左分支,结点7就作为右分支.
(7) 将新结点N13放入有序序列,保持从小到大排序:
N8 N13
(8) 重复步骤(2),提取剩下的两个结点,N8与N13组成新结点N21,其权值=8+13=21,
数值较小的N8作为左分支,N13就作为右分支.
最后得到"哈夫曼树":
N21
/ \
N8 N13
/ \ / \
N3 5 6 7
/ \
1 2
哈夫曼编码:
规定哈夫曼树的左分支代表0,右分支代表1.
得出所有结点的 哈夫曼编码:
权值7 : 11
权值6 : 10
权值5 : 01
权值2 : 001
权值1 : 000
哈夫曼树的带权路径长度是:
7*2 + 6*2 + 5*2 + 2*3 + 1*3 = 45