408【数据结构】哈夫曼树、哈夫曼编码与并查集知识点与部分错题

1.关于哈夫曼树

给定n个结点(每个都具有一定的权值),取权值最小的两个结点分别作为左孩子(权值假设为w1)和右孩子(权值假设为w2)进行合并,父结点权值为两个孩子的权值之和(权值为w1+w2),然后再从剩余的结点中(包括刚刚合并得到的父结点)找到权值最小的进行合并。这样进行了n-1次合并,每次都多出一个父结点,所以总的节点数为2n-1;将{10,12,16,21,30}五个结点构建哈夫曼树,构建过程如下图。

哈夫曼树的构成_哔哩哔哩_bilibili

哈夫曼树的构成

注:

1.每次两两配对都是当前权值最小的两个结点

2.也可能出现两个权值相同的结点,此时和任意一个配对都可。

3.例如,图中哈夫曼树生成过程中,10,12,16,21,30 中  10与12配对,父结点为22 下一次 就是22,16,21,30四个中相互配对。以此类推。

4.哈夫曼树可能并不唯一

2.哈夫曼编码

 

如图,若此时转向左孩子为0,转向右孩子为1,则权值为10的结点哈夫曼编码为:000,权值为12的结点哈夫曼编码为:001,以此类推。

3.带权路径长度(WPL)

带权路径长度WPL等于sum(结点的权值*(结点的深度-1))(设根节点深度为1)。

例如:

图中哈夫曼树的WPL=(10+12)*(4-1)+(16+21+30)*(3-1)=66+134=200

注意:

哈夫曼树的带权路径长度是相应结点生成的最小带权路径长度

4.并查集

并查集是用集合进行合并、查询操作的一种集合。

合并即两个集合合并为一个集合,查询即查询两个元素是否同属一个集合。

通常使用树(森林)的双亲表示作为并查集的存储结构。

元素位序(一般用数组存储)0123456789
元素值
父结点值-1-1-1-1-1-1-1-1-1-1

 父结点值为-1表示此时为初始化状态,元素值也为空。

进行合并时,集合均转化成树,然后找一个集合作为主树,其他集合均为该集合的右子树,依次类推。

5.错题

01.在有n个叶结点的哈夫曼树中,非叶结点的总数是()

A.n-1     B.n     C.2n-1     D.2n

分析:哈夫曼树只有叶子结点(度为0的结点)和度为2的结点,总的结点数为2n-1,所以非叶结点=度为2的结点数=(2n-1)-n=n-1

答案:A

05.一颗哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字.

A.107     B.108     C.214     D.215

注:码字(Code Word)是指利用Huffman码编码后的信号。此处可以被认为是叶子结点。

分析:哈夫曼树共有215个结点,即2n-1个结点,对其进行哈夫曼编码,实际上进行编码的是原有的结点,而不是两个最小的结点合并产生的结点。因合并产生的结点,共有n-1个,所以能得到的不同码字个数是n(也就是叶子结点的个数)。2n-1=215->2n=216->n=108.

答案:B

07.如度为m的哈夫曼树中,叶子结点个数为n,则非叶节点的个数为().

A.n-1     B.⌊n/m⌋-1     C.⌈(n-1)/(m-1)⌉     D.⌈n/(m-1)⌉-1

分析:哈夫曼树只有叶子结点和度为2的结点。叶子结点的个数为n,总结点个数为2n-1,非叶结点个数为n-1.

答案:A

09.并查集中最核心的两个操作是:①查找,查找两个元素是否属于同一个集合;②合并,如果两个元素不属于同一个结合,且所在的两个集合腹部香蕉,则合并这两个集合。假设初始长度为10(0~9)的并查集,按照1-2、3-4、5-6、7-8、8-9、1-8、0-5、1-9的顺序进行查找和合并操作,最终并查集共有()个集合。

A.1     B.2     C.3     D.4

分析:初始时,0~9各成一个集合。进行查找时,查找1-2时,合并{1,2},查找3-4时,合并{3,4},查找5-6时,合并{5,6},查找7-8时,合并{7,8},查找8-9,合并{7,8,9},查找1-8时,合并{1,2,7,8,9},查找0-5时,合并{0,5,6},查找1-9时,他们同属一个集合。故有{1,2,7,8,9}、{0,5,6}、{3,4}三个集合。

答案:C

12.【2014统考真题】5个字符有如下4种编码方案,不是前缀码的是().

A.01,0000,0001,001,1

B.011,000,001,010,1

C.000,001,010,011,100

D.0,100,110,1110,1100

分析:哈夫曼编码的前缀码在解码的时候是不会产生歧义的,比如1110和11 10两个编码这三个编码是不可能同时存在的。依照这个原理,只有D选项是可能产生歧义的比如1100 和110  0这三个编码。

答案:D

13.【2015统考真题】下列选项给出的是从根分别到达两个叶结点路径上的权值序列,能属于同一棵哈夫曼树的是()。

A.24,10,5和24,10,7                      B.24,10,5和24,12,7

C.24,10,10和24,14,11                  D.24,10,5和24,14,6

分析:根结点24 由其中一个子结点为10可知 另一个子结点为14->选项A、B错误。若10的子节点为10 则另一个子结点为0  另一边子树14 若子结点为11 则另一子结点为3。由哈夫曼的构造过程可知(每次都是由两个最小的两个结点构造树),C选项给出的权值序列是不可能在同一子树的。而D选项 24(root) 10 5 5(left) 14 6 8(right)这样的构造是完全合理的。

答案:D

17.【2021统考真题】若某二叉树有5个叶结点,其权值分别为10,12,16,21,30,则其最小的带权路径长度(WPL)是()。

A.89     B.200     C.208     D.289

分析:如下图

哈夫曼树的构成_哔哩哔哩_bilibili

WPL=(4-1)*(10+12)+(3-1)*(30+16+21)=66+134=200

答案:B

18.【2022统考真题】给任意给定的含n(n>2)个字符的有限集S,用二叉树表示S的哈夫曼编码集和定长编码集,分别得到二叉树T1和T2,下列叙述中,正确的是()。

A.T1和T2的结点数相同

B.T1的高度大于T2的高度

C.出现频次不同的字符在T1中处于不同的层

D.出现频次不同的字符在T2中处于相同的层

分析:

定长编码顾名思义:比如n=4 那么结点就是 00 01 10 11

形成的树结点也就是4个

不妨假设n=3

如下图:

A选项:哈夫曼编码集5个结点 而定长编码集6个结点 A错误。

B选项:哈夫曼编码集和定长编码集高度相同,B错。

C选项:出现频次不同的字符可以出现在相同的层数,C错。

D选项:正确

答案:D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2024考研加油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值