怎么构建哈夫曼树

作者&投稿:愚要 (若有异议请与网页底部的电邮联系)
~ 问题一:如何建立哈夫曼树 哈夫曼树: 82 / \ 33 49 / \ / \ 16 17 20 29 / \ / \ 9 11 14 15 / \ 5 6 / \ 2 3 图片没法上传

问题二:哈夫曼树的构造 10分 第一步:排序 2 4 5 9
第二步:挑出2个最小的 2 4 为叶子构造出
6
2 4
第三步:判断 6 不大于 5或9(剩余叶子中最小的2个)=》 同方向生长,得出:
11
6 5
2 4
第四步:继续生长
20
11 9
6 5
2 4
权值为 2*3+4*3+5*2+9*1=37
也可以20+11+6=37
例题:6、13、18、30、7、16
排序 6 7 13 16 18 30
13
6 7
26 26大于16或18 =》分支生长
13 13
6 7
26 34
13 13 16 18
6 7
此时最小的2个数为 26 30 得出
56 34
26 30 16 18
13 13
6 7
最后得出 90
56 34
26 30 16 18
13 13
6 7 权值 219
90+56+26+13+34 or 6*4+7*4+13*3+30*2+16*2+18*2

问题三:怎样构造合适的哈夫曼树? 5分 来自百度百科:哈夫曼树构造方法:
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
简单的说,就是选择两个权值最小的节点,构造一棵树,树的根权值是两个权值最小的节点之和,将新的权值节点放回序列,继续按照上述方法构造,直到只有一棵树为止,这样的树其WPL最小。

问题四:哈夫曼树怎样构造编码? 先编造哈夫曼树,哈夫曼树构造规则:
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止

构造完成之后,从这个树根结点开始,默认左子树为0,右子树为1,直到叶子结点为止,叶子结点的编码就是需要的编码。
举例
知字符A B C D E F的权值为8 12 5 20 4 11
哈夫曼树就是:
60
/ \
23 37
/ \ / \
F(11) B(12) 17 D(20)
/ \
A(8) 9
/ \
E(4) C(5)
编码就是 A:100, B:01, C:1011, D: 11, E:1010 ,F:00

问题五:哈夫曼树的构建过程 30分 哈夫曼树:
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
哈夫曼树的构造:
假设给定的权值如下:3,5,7,8,10,15;
首先取 *** 中最小的两个数:3+5=8,再删除 *** 中3和5的值,把8放入原 *** ,
原 *** 变成:7,8,8,10,15;
8
/ \
3 5
再从7,8,8,10,15中再取2个最小的数构成一个树
15
/ \
8 7
/ \
3 5
再从8,10,15,15中再取2个最小的数构成一个树:
18
/ \
8 10
再从15,15,18中取两个最小数:15,15,构成树:
30
/ \
15 15
/ \
8 7
/ \
3 5
最后把18,30构成树(此时 *** 中已经没元素了,就形成了哈夫曼树):
48
/ \
30 18
/ \ / \
15 15 8 10
/ \
8 7
/ \
3 5
希望你能看懂!!

问题六:哈夫曼树的创建 哈夫曼树不一定是唯一的,选出最小和次小之后哪个放左边都行的,哈弗曼编码唯一只是说得到的码是唯一,但是可以有许多种码,只是它能够唯一地编码和解码。所以,上面两个图应该都是正确的。如果你习惯按照左小右大的规则来构造的话,那只能选择第二幅图了。

问题七:数据结构,图中哈夫曼树是如何构建的? 怎么样才可以并列生长?如第三层的37和41 构造哈夫曼树,从节点中选择权最小的两个节点。两个节点求和后,它们的和被放入节点选择的节点数队中。下次从节点队中再选当前权值最小的两个节点。如果两个数的和正好是下一步的两个最小数的其中的一个,那么这个树直接往上生长就可以了,如果这两个数的和比较大,不是下一步的两个最小数的其中一个,那么就并列生长。就是37,51的情况。不知道对不对。

问题八:3 4 5 6 8 9怎么构造哈夫曼树,怎么我总是构造不对,是这样的么 对的,不过通常习惯性会从左到右,从下到上来构造


数据结构(14)-哈夫曼树&哈夫曼编码
下面我们就使用顺序存储结构来实现哈夫曼树及哈夫曼编码。由于结点存在权值,且我们使用的是顺序存储结构,可以通过下标来获取到左右孩子、双亲结点。个叶子结点的二叉树会有 个结点,构建哈夫曼树的时候,由于我们使用的是顺序存储结构,我们可以将叶子结点存放在前 个位置,而非叶子结点,存放在后面,...

3.已知一棵哈夫曼树含有60个叶子结点,则该树中共有___个非叶子结点...
构建哈夫曼树时,首先需要确定树中结点的构成。由于哈夫曼树的构建是从叶子结点开始,不断地构建新的父结点,直至树根,所以结点中应包含指向父结点的指针。但是在使用哈夫曼树时是从树根开始,根据需求遍历树中的结点,因此每个结点需要有指向其左孩子和右孩子的指针。

哈夫曼编码有哪些应用,哈夫曼实现无损数据压缩和解压缩的原理以及哈夫...
4. 图像压缩:JPEG和PNG等图片压缩格式中也采用了哈夫曼编码。5. 视频编码:H.264(AVC)和HEVC(H.265)视频编码标准中都使用了哈夫曼编码。哈夫曼编码的实现原理:1. 统计字符频率:首先对输入的文本或数据进行字符频率的统计,得到每个字符出现的频率。2. 构建哈夫曼树:根据字符频率构建哈夫曼树,...

数据结构 哈夫曼树在构造时 有顺序要求吗 比如左右子树的顺序要固定什...
" << HT[i].rchild << '\\n';int main(){ Huffmantree HT;cout << "开始构建哈夫曼树" << '\\n';cout << "请输入哈夫曼树的叶子结点的个数: ";int n;cin >> n;cout << "请输入每个叶子结点的权值: " << '\\n';CreatHuffmantree(HT, n);print(HT, n);return 0;} ...

...需要构建一棵哈夫曼树。请高手帮忙给出实际的编程代码。。感激不...
void hfmtree ( huffnode ht[] ) 是用来建立一课哈夫曼树的,其他函数,视需要可删除 include<stdio.h> include<string.h> define maxsize 10000 \/*编码函数中,被编译的字符串的最大长度*\/ define max 10000 \/*最大字符的个数*\/ typedef struct \/*定义一个huffnode结点 *\/ { char data;...

哈夫曼树是满二叉树吗?我就奇怪了,书上的图都不是满二叉树,怎么就有那...
不是满二叉树,是正则二叉树(也叫正规二叉树),其中只有度为0和度为2的结点 因为n0 = n2 + 1,所以n个叶子的正则二叉树自然只有2n-1个结点 至于满二叉树当然也是正则二叉树的特例

哈夫曼编码唯一吗
举个例子,假设我们有一个包含四个数据项的数据集:A、B、C和D,它们的频率分别为40、30、20和10。在构建哈夫曼树时,我们可以首先选择A和B作为两个子节点,也可以选择A和C,因为它们的频率之和都是70。这两种选择都会导致不同的哈夫曼树和相应的编码。在实际应用中,哈夫曼编码的非唯一性通常不...

权值为{1,2,6,8}的四个结点构成的哈夫曼树的带权路径长度是(D )。 A...
结果是D,构建哈夫曼树的过程,大小排序,1、2、6、8,1和2按大小,为左右子,父节点为3,6大于3,所以6作为右子,3和6的父节点为9,因为8小于9,故8为左子,8和9的父节点为17.然后计算根节点到每个叶子节点的带权路径长度。画好树,即为1*8+2*6+3*1+3*2=29....

为什么99个结点的哈夫曼树,用二叉链表,它的空指针域会是51个?_百度知...
加上根节点的空指针,总共是49+1=50个空指针。考虑到根节点的特殊性,它没有兄弟,所以根节点也需要一个额外的空指针域,这就构成了51个空指针的总和。这种空指针的计算与哈夫曼树的性质有关,它是通过霍夫曼编码算法生成的,该算法根据源符号出现的频率生成变长编码。在构建哈夫曼树时,目标是使得...

哈夫曼树的特点是什么?
哈夫曼树的特点如下:1,带权路径和最小。哈夫曼树是带权路径和中权值最小的树,又称为最优二叉树。2,不存在度为1的节点。3,哈夫曼总结点数为2n-1(n为带权节点个数)。4,权值越小的节点到根节点的路径越长。5,由于构建过程中,并未严格区分左右子树,故最优二叉树个数不唯一。知识扩展:...

泗县19793222010: 哈夫曼树的构建过程 -
舒眨畅泽: 哈夫曼树: 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近. 哈夫曼树的构造: 假...

泗县19793222010: 怎样构造合适的哈夫曼树? -
舒眨畅泽: 来自百度百科:哈夫曼树构造方法: 假设有n个权值,则构造出的哈夫曼树有n个叶子结点. n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森...

泗县19793222010: 权值序列为:10,16,20,6,30,24,如何构造出一棵哈夫曼树? -
舒眨畅泽:[答案] 哈夫曼树构造规则是先从序列中选取两个最小的权值的点来构造树,新的树根的权值是两个左右子节点的权值和,该新的权值然后放回到权值序列中.迭代这个过程直到只有一棵树为止. 所以该哈夫曼树是: 106 / \ 44 62 / \ / \ 20 24 30 32 / \ 16 16 / \ 6 10

泗县19793222010: 哈夫曼树怎样构造编码? -
舒眨畅泽: 先编造哈夫曼树,哈夫曼树构造规则: 假设有n个权值,则构造出的哈夫曼树有n个叶子结点. n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) ...

泗县19793222010: 哈夫曼树的建立 -
舒眨畅泽: 在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码.哈夫曼编码是哈夫曼树的一个应用.哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码. 首先介绍什么是哈夫曼树.哈夫曼树又称最...

泗县19793222010: 构造哈夫曼树 -
舒眨畅泽: 第一步排序 2 3 6 7 10 19 21 32 构图如下 谢谢提醒 我粗心了…… 字符版 复制到记事本里看********o********** *******/*\********* *****o*****o******* ****/*\***/*\****** ***19*21**o**32**** *********/*\******* ********o***o****** *******/*\*/*\***** *******o*6*7*10**** ******/*\********** ******2*3**********

泗县19793222010: 赫夫曼树的建立 -
舒眨畅泽: 给你一个全功能的代码,关于,hufman tree的,你要哪一段就自己节选:/* Note:Your choice is C IDE */#include "stdio.h"#include "stdlib.h"#define N 20/*叶子最大结点数*/ typedef struct { int weight;/*假设叶子权值为整型*/ int lchild,rchild,...

泗县19793222010: 用c语言随意构建一个哈夫曼树 -
舒眨畅泽: #include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#define MaxSize 10#define IS_FULL(ptr)(!(ptr)) typedef struct btnode { char code; int Element; struct btnode* LChild,*RChild; }BTNode; typedef struct btree{ struct btnode* ...

泗县19793222010: 动态演示哈夫曼树的生成过程
舒眨畅泽: #include &lt;stdio.h&gt;/ #include &lt;stdlib.h&gt;/*哈夫曼树建立、哈夫曼编码算法的实现*/ #include &lt;string.h&gt; typedef char* HuffmanCode;/*动态分配数组,存储哈夫曼编码*/ typedef struct { unsigned int weight ; /* 用来存放各个结点的权...

泗县19793222010: 9,2,7,5,4,3,8,12,10,如何构造哈夫曼树 -
舒眨畅泽:[答案] 从大到小排列,然后将最小的两项相加,始终是最小的两项相加,加到最后就OK啦···

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网