1.路径:从根结点到该结点的分支序列。路径长度:从根结点到该结点所经过的分支数目。
2.结点的权:给树的每个结点赋予的实数。带权路径长度:某一结点的路径长度与该结点的权的乘积。
3.树的带权路径长度记为:
1.初始化:左右子树为空
2.找最小树:选择根结点权值最小的二叉树,作为新的二叉树的左右子树,标记新二叉树的根结点权值为左右子树根结点权值之和。
3.删除和加入:从F中删除被选中的那两棵二叉树,同时把新构成的二叉树加入到森林F中。
4.判断:重复2,3操作,知道森林含有一棵二叉树为止,就称此二叉树为哈夫曼树。
由于哈夫曼树没有度为1的结点,因此一棵树有n个叶子的哈夫曼树共有2n-1个结点,可以用2n-1的一维数组来存放哈夫曼树的各个结点。
对于一棵具有n个叶子的哈夫曼树,若对树中的每个左分支赋予0,右分支赋予1(或左为1,右为0),则从根到每个叶子的通路上,各分支的赋值构成一个二进制串,该串被称为哈夫曼编码。
原文:https://www.cnblogs.com/lan-adress/p/12884560.html