数据结构各章习题及答案!! 下载本文

A A

B B D C D C F H F H E E

I J J I

第一步 第二步

图5-10

【例5-13】将如图5-11所示的森林转换成二叉树。 A C D

I B E J G F

图5-11

解: 步骤略,结果如图5-12所示。

A

C B

A B C E F I

D H J

第三步

H K L D

H E

F I

L G J

K

图5-12

【例5-14】假定用于通信的电文由8个字符A、B、C、D、E、F、G、H组成,各字母在电文中出现的概率为5%、25%、4%、7%、9%、12%、30%、8%,试为这8个字母设计哈夫曼编码。

解: 根据题意,设这8个字母对应的权值分别为(5,25,4,7,9,12,30,8),并且n=8。

(1)设计哈夫曼树的步骤如图5-13所示。

5 25 4 7 9 12 30 8 第一步:

第二步: 25 7 9 12 30 8 9

4 5

第三步: 15 9 25 9 12 30

7 8 4 5

43 第七步: 57

27 30 18 25

12 15 9 9

7 8 4 5

100 第八步:

43 57

18 30 25 27 15 9 9 12

8 4 5 7

图5-13

(2)设计哈夫曼编码

利用第八步得到的哈夫曼树,规定左分支用0表示,右分支用1表示,字母A、B、C、D、E、F、G、H的哈夫曼编码如下表示:

A:0011 B:01 C:0010 D:1010 E:000 F:100 G:11 H:1011

习题5

一、单项选择题

1. 在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( 1. C)个。

A. 4 B. 5 C. 6 D. 7

2. 假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为(2. B )个。

A. 15 B. 16 C. 17 D. 47 3. 假定一棵三叉树的结点数为50,则它的最小高度为(3. C )。 A. 3 B. 4 C. 5 D. 6 4. 在一棵二叉树上第4层的结点数最多为( 4. D)。

A. 2 B. 4 C. 6 D. 8

5. 用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点R[i]若有左孩子,其左孩子的编号为结点(5. B)。

A. R[2i+1] B. R[2i] C. R[i/2] D. R[2i-1]

6. 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为(6. D )。

A. 24 B. 48 C. 72 D. 53 7. 线索二叉树是一种( 7. C)结构。

A. 逻辑 B. 逻辑和存储 C. 物理 D. 线性 8. 线索二叉树中,结点p没有左子树的充要条件是( 8. B)。 A. p->lc=NULL B. p->ltag=1 C. p->ltag=1 且p->lc=NULL D. 以上都不对

9. 设n , m 为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是(9. B)。 A. n在m右方 B. n在m 左方 C. n是m的祖先 D. n是m的子孙 10. 如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的(10. B )。

A. 中序 B. 前序 C. 后序 D. 层次序

11. 欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用( 11. A)存储结构。

A. 三叉链表 B. 广义表 C. 二叉链表 D. 顺序 12. 下面叙述正确的是( 12. D)。 A. 二叉树是特殊的树

B. 二叉树等价于度为2的树 C. 完全二叉树必为满二叉树 D. 二叉树的左右子树有次序之分

13. 任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序(13. A )。 A. 不发生改变 B. 发生改变 C. 不能确定 D. 以上都不对

14. 已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为(14. B )。 A. 1 B. 2 C. 3 D. 4 15. 根据先序序列ABDC和中序序列DBAC确定对应的二叉树,该二叉树( 15. A )。

A. 是完全二叉树 B. 不是完全二叉树 C. 是满二叉树 D. 不是满二叉树 二、判断题

1. 二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树。 2. 二叉树的前序遍历中,任意结点均处在其子女结点之前。 3. 线索二叉树是一种逻辑结构。 4. 哈夫曼树的总结点个数(多于1时)不能为偶数。 5. 由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。

(1.× ) ( 2.√ ) ( 3.×) (4.√) (5.×)

6. 树的后序遍历与其对应的二叉树的后序遍历序列相同。 7. 根据任意一种遍历序列即可唯一确定对应的二叉树。 8. 满二叉树也是完全二叉树。 9. 哈夫曼树一定是完全二叉树。 10. 树的子树是无序的。 三、填空题

(6.√) (7.√) ( 8.√) (9.×) (10.× )

1. 假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为_____,树的深度为_____,终端结点的个数为______,单分支结点的个数为______,双分支结点的个数为______,三分支结点的个数为_______,C结点的双亲结点为_______,其孩子结点为_______和_______结点。1. 3,4,6,1,1,2,A,F,G

2. 设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有_______个。2. n+1

3. 对于一个有n个结点的二叉树,当它为一棵________二叉树时具有最小高度,即为

?log2(n?1)??,最_______,当它为一棵单支树具有_______高度,即为_______。3. 完全,?大,n

4. 由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为___。4. 55 5. 在一棵二叉排序树上按_______遍历得到的结点序列是一个有序序列。5. 中序

6. 对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为_______个,其中_______个用于链接孩子结点,_______个空闲着。6. 2n,n-1,n+1 7. 在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=______。7. n2+1 8. 一棵深度为k的满二叉树的结点总数为_______,一棵深度为k的完全二叉树的结点总数的最小值为_____,最大值为______。8. 2k-1,2k-1,2k-1 9. 由三个结点构成的二叉树,共有____种不同的形态。9. 5

10. 设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为____。10. 2h-1

11. 一棵含有n个结点的k叉树,______形态达到最大深度,____形态达到最小深度。11. 单支树,完全二叉树

12. 对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为________,右孩子结点的编号为________,双亲结点的编号为________。12. 2i,2i+1,i/2(或?i/2?)

13. 对于一棵具有n个结点的二叉树,采用二叉链表存储时,链表中指针域的总数为_________个,其中___________个用于链接孩子结点,_____________个空闲着。13. 2n,n-1,n+1

14. 哈夫曼树是指________________________________________________的二叉树。14. 带权路径长度最小

15. 空树是指________________________,最小的树是指_______________________。15. 结点数为0,只有一个根结点的树

16. 二叉树的链式存储结构有______________和_______________两种。16. 二叉链表,三叉链表

17. 三叉链表比二叉链表多一个指向______________的指针域。17. 双亲结点 18. 线索是指___________________________________________。18. 指向结点前驱和后继信息的指针

19. 线索链表中的rtag域值为_____时,表示该结点无右孩子,此时______域为指向该结点