据集(3,12,7,4,2,8)为叶结点的权值,构造一棵哈夫曼树,并求其带权路径长度。
1个回答
关注
展开全部
亲亲您好,很高兴为您解答☺️☺️据集(3,12,7,4,2,8)为叶结点的权值,构造一棵哈夫曼树,并求其带权路径长度。将所有叶子结点按照权值从小到大排序,得到(2, 4, 7, 8, 12)取出权值最小的两个结点(2和4),构造一棵新的二叉树,其根节点的权值为2+4=6,左右孩子分别为2和4将这个新的二叉树插入到原来的序列中(得到6, 7, 8, 12)再次取出权值最小的两个结点(6和7),构造一棵新的二叉树,其根节点的权值为6+7=13,左右孩子分别为6和7将这个新的二叉树插入到序列中(得到8, 12, 13)接着取出权值最小的两个结点(8和12),构造一棵新的二叉树,其根节点的权值为8+12=20,左右孩子分别为8和12将这个新的二叉树插入到序列中(得到13, 20)最后取出权值最小的两个结点(13和20),构造一棵新的二叉树,其根节点的权值为13+20=33,左右孩子分别为13和20构造完成,得到一棵哈夫曼树。
咨询记录 · 回答于2023-06-09
据集(3,12,7,4,2,8)为叶结点的权值,构造一棵哈夫曼树,并求其带权路径长度。
亲亲您好,很高兴为您解答☺️☺️据集(3,12,7,4,2,8)为叶结点的权值,构差衫棚造一棵哈夫曼树,并求其带权路径长度。将所有叶子结点按照权值从小到大排序,得到(2, 4, 7, 8, 12)取出权值最小的两个结点(2和4),构造一棵新的二叉树,其根节点的权值为2+4=6,左右孩子分别为2和4将这个新的二叉树插入到原来的序列中(得到6, 7, 8, 12)再次取出权值最小的两个结点(6和7),构造一棵新的二叉树,其根节点的权值为6+7=13,左右孩子分别为6和7将这个新的二叉树插入塌丛到序列中(得到8, 12, 13)接着取出权值最小的两个结点(8和12),构造一棵新的二叉树,其根节点的权值为8+12=20,左右孩子分别为8和12将这个新的二叉树插入到序列中(得到13, 20)最后取出权值最小的两个结点(13和20),构造一棵新的二叉树,其根节点的权值为13+20=33,左右虚则孩子分别为13和20构造完成,得到一棵哈夫曼树。
拓展相关:带权路径长度是树的一个重要xing质,因此在学习带权路径长度前,需要先理解树的概念。树是一种非线xing数据结构,由节点和边组成,没有环路且有唯一根节点。计算带权路径长度遍历整或信棵树,衫衫轮因此需要掌握树的各种遍历算法。包括前序遍历、中塌裂序遍历、后序遍历等,这些算法可以帮助我们对树进行深入的了解。带权路径长度的计算方法是在遍历树的基础上累加每个叶子节点的深度乘以其权值。掌握这种计算方法可以有效地求出带权路径长度,并应用到算法设计中。带权路径长度常常被应用在树形图像的压缩和编码中,也可以用于衡量哈夫曼树、zui优二叉搜索树等数据结构的效率。zui后,需要进行练习和实践,提高计算带权路径长度的能力。可以通过编写程序手动计算带权路径长度的方法进行实践。学习带权路径长度需要掌握树的基本概念和遍历算法,理解其计算方法,并且能够应用到实际问题中。同时,进行练习和实践,提高计算带权路径长度的能力。
还有个3呢
带权路径长度就是所有叶子结点的权值乘以它们到根节燃闷点路径长度的和。这棵哈皮野弯夫曼树的带脊举权路径长度为:2*3+4*3+7*2+8*2+12*2=70
不是,我说你的哈夫曼树少了3
将所有叶子结点按照权值从小到大排序,得到(2,3,4,7,8,12)取出权值zui小的两个结点(2和3),构造一棵新的二叉树,其根节点的权值为2+3=5,左右孩子分别为2和3将这个新的二叉树插入到原来的衫让雀序列中(得到4,5,7,8,12)再次取出权值zui小的两个结点(4和5),构造一棵新的二叉树,其根节点的权值为4+5=9,左右孩子分别为4和5将这个新的二叉树插入到序列中(得到7,8,9,12)接着取滑饥出权值zui小的两个结点(7和8),构造一棵新的二叉树,其根节点的权值为7+8=15,左右孩子分别为7和8将这个新的二叉树插或早入到序列中(得到9,12,15)再次取出权值zui小的两个结点(9和12),构造一棵新的二叉树,其根节点的权值为9+12=21,左右孩子分别为9和12将这个新的二叉树插入到序列中(得到15,21)zui后取出权值zui小的两个结点(15和21),构造一棵新的二叉树,其根节点的权值为15+21=36,左右孩子分别为15和21构造完成,得到一棵哈夫曼树。