14个值组成哈夫曼树共有多少节点
14个带权叶子组成的哈夫曼树,共有27个结点。
根据哈夫曼树的构造规则,最开始这14个结点全是离散的,可看为14棵单独的树。不断找到权值最小的两棵树,添加一个度为2的分支结点把它们组合起来,直到最后只有一棵树。
因此对于哈夫曼树,只有度为0的叶子和度为2的结点,且二叉树中总是度为0的结点比度为2的结点多一个,因此14个叶子结点的哈夫曼树有13个度为2的结点,它的总结点数是14+13=27个。
一棵哈夫曼树中可能存在度为一的节点
因为哈夫曼树的构造是以两棵值最小的树合并,每次合并都是两棵子树,因此不可能存在度为一的节点。
高度为h的哈夫曼树中
哈夫曼树度只能为0或2,不存在度为1。至少:考虑每层2个结点(除了根结点),则至少为2h-1个至多:考虑满二叉树,则至多为(2^n)-1应该是这样吧,如有错误,欢迎指正!
{7,2,8,4,16,3,9}构造出哈夫曼树。并计算带权路径
7个权值是72841639(1)从小到大排序23478916(这是有序序列)(2)每次提取最小的两个结点,取结点2和结点3,组成新结点N5,其权值=2+3=5,取数值较小的结点作为左分支,结点2作为左分支,而结点3就作为右分支.(3)将新结点N5放入有序序列,保持从小到大排序:4N578916(4)重复步骤(2),提取最小的两个结点,结点4与N5组成新结点N9,其权值=4+5=9,结点4的数值较小,作为左分支,N5就作为右分支.(5)将新结点N9放入有序序列,保持从小到大排序:789N916[注意:新结点N9排在原有结点9的后面](6)重复步骤(2),提取最小的两个结点,结点7与结点8组成新结点N15,其权值=7+8=15,结点7的数值较小,作为左分支,结点8就作为右分支.(7)将新结点N15放入有序序列,保持从小到大排序:9N9N1516(8)重复步骤(2),提取最小的两个结点,结点9与N9组成新结点N18,其权值=9+9=18,结点9作为左分支,N9就作为右分支.(9)将新结点N18放入有序序列,保持从小到大排序:N1516N18(10)重复步骤(2),提取最小的两个结点,N15与结点16组成新结点N31,其权值=15+16=31,N15的数值较小,作为左分支,结点16就作为右分支.(11)将新结点N31放入有序序列,保持从小到大排序:N18N31(12)重复步骤(2),提取剩下的两个结点,N18与N31组成新结点N49,其权值=18+31=49,数值较小的N18作为左分支,N31就作为右分支.最后得到哈夫曼树:N49/\N18N31/\/\9N9N1516/\/\4N578/\23带权路径长度(WPL):根结点N49到结点16的路径长度是2,结点16的带权路径长度是16*2根结点N49到结点9的路径长度是2,结点9的带权路径长度是9*2根结点N49到结点8的路径长度是3,结点8的带权路径长度是8*3根结点N49到结点7的路径长度是3,结点7的带权路径长度是7*3根结点N49到结点4的路径长度是3,结点4的带权路径长度是4*3根结点N49到结点3的路径长度是4,结点3的带权路径长度是3*4根结点N49到结点2的路径长度是4,结点2的带权路径长度是2*4所以,哈夫曼树的带权路径长度(WPL)等于16*2+9*2+8*3+7*3+4*3+3*4+2*4=127附:哈夫曼编码:规定哈夫曼树的左分支代表0,右分支代表1.从根结点N49到结点16,连续经历两次右分支,编码就是11从根结点N49到结点9,连续经历两次左分支,编码就是00从根结点N49到结点8,先经历右分支,再左分支,最后右分支,编码就是101如此类推,可以得出所有的结点的哈夫曼编码:权值16:11权值9:00权值8:101权值7:100权值4:010权值3:0111权值2:0110
为什么哈夫曼树不存在度为一的结点
为什么哈夫曼树不存在度为1的结点,要从哈夫曼树的构建规则分析。
哈夫曼树最初是一堆离散的带权叶子结点,每个叶子都视为森林的一棵树。不断从森林中找到权值最小的两棵树,为它们添加一个共同的父结点,父结点的权值为两个子树的权值之和,然后继续寻找最小权值的两棵树组合。
可见,每组合一次都会新增一个分支结点,该分支结点总是包括左右子树,即它的度为2。因此,哈夫曼树不存在度为1的结点。
赫夫曼树例题讲解
利用哈夫曼编码进行通信可以大大提高信道的利用率,缩短信息传输的时间,降低传输成本。根据哈夫曼编码的原理,编写一个程序,在用户输入结点权值的基础上求哈夫曼编码。
从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,求出各字符的哈夫曼编码。要求:
1.输出存放哈夫曼树的数组HT的初态和终态;
2.输出每个字符的哈夫曼编码;
3.输入一个字符串,对字符串进行编码并输出;
4.(选作)输入一串以哈夫曼编码方式编码的二进制码,进行译码并输出。