问题描述
- 关于科夫曼树的一个小问题
-
在看到最优二叉树的时候有关于树的路径有这个个定义:树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。这里我一直不理解,如下图,一个是完全二叉树,一个是普通的二叉树。可是他们的路径长度不是完全一样吗?
另外,还有一个问题,就是在生成科夫曼树的时候,假如在取2个最小权值的时候,发现此时有3数在范围内,即一个刚刚生成的权值和一个处在森林里的只有根结点的权值相等,同为次小的数。此时应如何取舍,为什么?
解决方案
最短的含义就是没有比它更短,不一定说一定它是唯一最短的。除非是满二叉树。
只要是带权路径最短,都可以。哈夫曼树也未必有唯一解。
解决方案二:
1、完全二叉树:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点。
这是完全二叉树的定义,满足该定义的才是完全二叉树。路径长度最短只是完全二叉树的一个性质,不能作为判断依据(必要非充分条件)。
2、其一,你想说的是“哈夫曼树”吧?
其二,正如楼上所说,楼主应该目前还没学到组成原理等专业课吧?如果学过前缀编码就会理解了,哈夫曼树只是为了生成一棵带权路径长度最小的树,并不唯一,比如用于前缀编码,只要能最大程度地节约存储空间就可以了,无所谓生成的哈夫曼树具体是什么样的。
时间: 2024-07-28 21:25:05