最优二叉树&&哈夫曼编码
树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。 树的带权路径长度(weighted path length of tree,wpl) 结点的权值:在一些应用中,赋予树中结点的一个有某种意义的实数、 结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积 树的带权路径长度(wpl):定义为树中所有结点的带权路径长度之和 最优二叉树 在权为w1,w2,...,wn的n个 叶子结点 所构成的所有二叉树中,带权路径长度最小(即代价最小)的二叉树成为最优二叉树。 注意: 叶子上的权值均相同时,完全二叉树一定是最优二叉树,否则完全二叉树不一定是最优二叉树。 最优二叉树中,权值越大的叶子结点离根越近 最优二叉树的形态不唯一,wpl最小 构造最优二叉树 哈夫曼算法 根据给定的n个权值w1,w2,...,wn构成n棵二叉树的森林F={T1,T2,..,Tn},其中每棵二叉树Ti中只有一个权值为wi的根节点,其左右子树均为空。 在森林F中选出两棵根结点权值最小的树(当这种的树不止两棵时,可以从中任选两棵),将这两棵树和并称一棵新树,为了保证新树仍是二叉树,需要增加一个新结点作为新树的根,并将所选的两棵树根分别作为新树的左右孩子,将这两个孩子的权值之和作为新树根的权值 对新的森林F重复2,直到森林F只剩一棵树为止。 注意