- 3
- 0
- 约小于1千字
- 约 10页
- 2021-03-18 发布于山东
- 举报
哈夫曼树的构造
———————————————————————————————— 作者:
———————————————————————————————— 日期:
哈夫曼树的构造
构造哈夫曼树的过程是这样的
一、构成初始集合
对给定的 n 个权值 {W1,W2,W3,...,Wi,...,Wn} 构成 n 棵二叉树的初始集合 F={T1,
T2,T3,...,Ti,...,Tn} ,其中每棵二叉树 Ti 中只有一个权值为 Wi 的根结点,它的左右子
树均为空。(为方便在计算机上实现算法, 一般还要求以 Ti 的权值 Wi 的升序排列。 )
二、选取左右子树
在 F 中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树, 新二叉树
的根结点的权值为其左右子树的根结点的权值之和。
三、删除左右子树
从 F 中删除这两棵树, 并把这棵新的二叉树同样以升序排列加入到集合 F 中。
四、重复二和三两步,
重复二和三两步,直到集合 F 中只有一棵二叉树为止。
举个例子
有个序列是 (7,9,2,6,32,3,21,10)
叫你求哈夫曼树
步骤一:把这些点都看成是一个只有根结点的树的集合 F
步骤二,选 2 个值最小的树
步骤三:在这些树的集合 F 中删除这 2 棵树
然后把 构成一颗二叉树
变成了
(5=2+3)
然后把这个树加入到集合 F
代表这棵树的权值然后继续上述步骤
肯定是选 5 和 6
把这 2 个构成二叉树
在 F中删除 5 6 加入 11 这棵树变成了
继续上述步骤
选7和9
在 F中删除 7和 9
加入 16 这棵树
变成了
继续上述步骤
选 10和11
在 F中删除 10 和 11 加入 21 这棵树
继续上述步骤
选 16 和 21 (有 2 个 21,随便选哪个)
我选那个只有一个根结点的 21 好了
16 和 21 构成二叉树
在 F 中删除这 16 和 21 这两棵树加入 37 这棵树
继续上述步骤
选21和 32
构成二叉树
在F中删除 21和32这2两棵树加入 53 这棵树
还是继续上面步骤
把 F 中的两棵树合并成一棵树
完成了 !
这个就是哈夫曼树
原创力文档

文档评论(0)