哈夫曼树,又称最优二叉树。
概念:
1.树的带权路径:所有叶子节点到根节点的路径加权和。
2.哈夫曼树:带权路径长度最短的二叉树。
特点:
1.每个节点的度只能为2或者0;
2.叶子结点数是N时,中间节点数为N-1,总结点树为2*N-1
3.哈夫曼编码:任意一个叶节点的编码都不是其他叶节点编码的前缀。
问题1:
1.为什么带权路径最短?
前提:带全路径所求的是叶子到根节点的长度,每个节点的度只能为0或者2
因为哈夫曼树的创建步骤是:每次取出节点中权最小的两个节点构树。得到的结果是,权数越小的节点,路径越长;权数越大的节点,路径越短。一颗树上的节点为N时,所有节点的连线共有N-1条,只要保证小权节点所占路径越大,大权路径越小,得到的带权路径长度才能越小。
2.哈夫曼编码为啥任意一个编码都不是其他编码的前缀?
因为这里所说的编码都是对叶子结点的编码。每个叶子节点的度都是0,是终结节点,没有其他节点经过。所以通过哈夫曼编码得到的结果不会存在歧义。所以在解码的时候,可以顺序读取编码,依次找编码对应得值,而不会出现走不通或者歧义的情况。