全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案
题目1:如果哈夫曼树有67个结点,则可知叶结点总数为:
-
A.: 22
-
B. 33
-
C. 34
-
D. 不确定
因为哈夫曼树没有n1,即没有只有一个子节点的节点,又因为n0 = n2-1
n0+n2 = 67,所以求得n0 = 34
题目2:为五个使用频率不同的字符设计哈夫曼编码,下列方案中哪个不可能是哈夫曼编码?
-
A. 00,100,101,110,111
-
B. 000,001,01,10,11
-
C. 0000,0001,001,01,1
-
D. 000,001,010,011,1
可以构造树。
画出来第一个发现就是不可能的,要知道,这里的又没有开头就是0的其他编码,怎么能直接来个00呢。
即如果把A选项的00变为0,这就是哈夫曼编码了。答案选A。
题目3:一段文本中包含对象{a,b,c,d,e},其出现次数相应为{3,2,4,2,1},则经过哈夫曼编码后,该文本所占总位数为:
经过画图可以得到:
经过计算,编码后总长度为27
其实还可以形成另一种哈夫曼树,结果都一样,这里懒得画圈了:
题目4:已知a、b两个元素均是所在集合的根结点,且分别位于数组分量3和2位置上,其parent值分别为-3,-2。问:将这两个集合按集合大小合并后,a和b的parent值分别是多少?
-
A. -5,2
-
B. -5,3
-
C. -3,3
-
D. 2,-2
要把parent绝对值小的并入绝对值大的上面,所以-3要加-2,为-5
然后原parent的值为-2的集合应该把父集合指引设为3
最后答案为B
题目6:用数组表示的集合中,如何让并查树更矮?
在向上查找根结点的同时将该元素指向根结点,就可以把路径缩短。