数据结构练习题——树和二叉树(含应用题)

1.选择题

1)把一棵树转换为二叉树后,这棵二叉树的形态是(   )。             

A唯一的                          B.有多种

C.有多种,但根结点都没有左孩子    D.有多种,但根结点都没有右孩子

答案:A

解释:因为二叉树有左孩子、右孩子之分,故一棵树转换为二叉树后,这棵二叉树的形态是唯一的。

2由3个结点可以构造出多少种不同的二叉树?(    )

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

答案:D

解释:五种情况如下:

                        

3一棵完全二叉树上有1001个结点,其中叶子结点的个数是(  )

A.250         B. 500          C.254        D.501   

答案:D

解释:设度为0结点(叶子结点)个数为A,度为1的结点个数为B,度为2的结点个数为C,有A=C+1,A+B+C=1001,可得2C+B=1000,由完全二叉树的性质可得B=0或1,又因为C为整数,所以B=0,C=500,A=501,即有501个叶子结点。

4一个具有1025个结点的二叉树的高h为(  )

A.11          B.10             C.11至1025之间       D.10至1024之间

答案:C

解释:若每层仅有一个结点,则树高h为1025;且其最小树高为 ëlog21025û + 1=11,即h111025之间。

5深度为h的满m叉树的第k层有(  )个结点。(1=<k=<h)

A.mk-1          B.mk-1            C.mh-1        D.mh-1

答案:A

解释:深度为h的满m叉树共有mh-1个结点,第k层有mk-1个结点。

6利用二叉链表存储树,则根结点的右指针是(  )

A.指向最左孩子        B.指向最右孩子         C.空        D.非空

答案:C

解释:利用二叉链表存储树时,右指针指向兄弟结点,因为根节点没有兄弟结点,故根节点的右指针指向空。

7对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用(  )遍历实现编号。

A.先序         B. 中序           C. 后序       D. 从根开始按层次遍历

答案:C

解释:根据题意可知按照先左孩子、再右孩子、最后双亲结点的顺序遍历二叉树,即后序遍历二叉树。

8若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用(  )遍历方法最合适。

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

答案:C

解释:后续遍历和层次遍历均可实现左右子树的交换,不过层次遍历的实现消耗比后续大,后序遍历方法最合适。

9在下列存储形式中,(  )不是树的存储形式?

A.双亲表示法   B.孩子链表表示法   C.孩子兄弟表示法   D.顺序存储表示

答案:D

解释:树的存储结构有三种:双亲表示法、孩子表示法、孩子兄弟表示法,其中孩子兄弟表示法是常用的表示法,任意一棵树都能通过孩子兄弟表示法转换为二叉树进行存储。

10一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足(  )

A.所有的结点均无左孩子        B.所有的结点均无右孩子

C.只有一个叶子结点            D.是任意一棵二叉树

答案:C

解释:因为先序遍历结果是“中左右”,后序遍历结果是“左右中”,当没有左子树时,就是“中右”和“右中”;当没有右子树时,就是“中左”和“左中”。则所有的结点均无左孩子或所有的结点均无右孩子均可,所以A、B不能选,又所有的结点均无左孩子与所有的结点均无右孩子时,均只有一个叶子结点,故选C。

(11)设哈夫曼树中有199个结点,则该哈夫曼树中有(    )个叶子结点。

A.99                         B.100

C.101                        D.102

答案:B

解释:在哈夫曼树中没有度为1的结点,只有度为0(叶子结点)和度为2的结点。设叶子结点的个数为n0,度为2的结点的个数为n2,由二叉树的性质n0=n2+1,则总结点数n= n0+n2=2*n0-1,得到n0=100。

12若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为(  )

A.X的双亲                      B.X的右子树中最左的结点

C.X的左子树中最右结点          D.X的左子树中最右叶结点

答案:C

13引入二叉线索树的目的是(  )

A.加快查找结点的前驱或后继的速度    B.为了能在二叉树中方便的进行插入与删除

C.为了能方便的找到双亲              D.使二叉树的遍历结果唯一

答案:A

(14)设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有(   )个。

A.n−1         B.n        C.n + 1            D.n + 2

答案:C

(15)n(n≥2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是( )。

A.该树一定是一棵完全二叉树

B.树中一定没有度为1的结点

C.树中两个权值最小的结点一定是兄弟结点

D.树中任一非叶结点的权值一定不小于下一层任一结点的权值

答案:A

解释:哈夫曼树的构造过程是每次都选取权值最小的树作为左右子树构造一棵新的二叉树,所以树中一定没有度为1的结点、两个权值最小的结点一定是兄弟结点、任一非叶结点的权值一定不小于下一层任一结点的权值。

2.应用

1试找出满足下列条件的二叉树

① 先序序列与后序序列相同    ②中序序列与后序序列相同

③ 先序序列与中序序列相同    ④中序序列与层次遍历序列相同

答案:先序遍历二叉树的顺序是“根—左子树—右子树”,中序遍历“左子树—根—右子树”,后序遍历顺序是:“左子树—右子树―根",根据以上原则有

或为空树,或为只有根结点的二叉树

  或为空树,或为任一结点至多只有左子树的二叉树.

  或为空树,或为任一结点至多只有右子树的二叉树.

或为空树,或为任一结点至多只有右子树的二叉树

2设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C

①画出这棵二叉树。

②画出这棵二叉树的后序线索树。

③将这棵二叉树转换成对应的树(或森林)。

答案:

3 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。

① 试为这8个字母设计赫夫曼编码。

② 试设计另一种由二进制表示的等长编码方案。

③ 对于上述实例,比较两种方案的优缺点。

答案:方案1;哈夫曼编码

先将概率放大100倍,以方便构造哈夫曼树。

 w={7,19,2,6,32,3,21,10},按哈夫曼规则:【[2,3),6], (7,10), ­……19, 21, 32

 方案比较:

方案1WPL2(0.19+0.32+0.21)+4(0.07+0.06+0.10)+5(0.02+0.03)=1.44+0.92+0.25=2.61

方案2WPL3(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3

结论:哈夫曼编码优于等长二进制编码

 (4)已知下列字符A、B、C、D、E、F、G的权值分别为3、12、7、4、2、8,11,试填写出其对应哈夫曼树HT的存储结构的初态和终态。

答案:

初态:

weight

parent

lchild

rchild

1

3

0

0

0

2

12

0

0

0

3

7

0

0

0

4

4

0

0

0

5

2

0

0

0

6

8

0

0

0

7

11

0

0

0

8

0

0

0

9

0

0

0

10

0

0

0

11

0

0

0

12

0

0

0

13

0

0

0

终态:

weight

parent

lchild

rchild

1

3

8

0

0

2

12

12

0

0

3

7

10

0

0

4

4

9

0

0

5

2

8

0

0

6

8

10

0

0

7

11

11

0

0

8

5

9

5

1

9

9

11

4

8

10

15

12

3

6

11

20

13

9

7

12

27

13

2

10

13

47

0

11

12

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL B是一种多路搜索,用于在数据库中快速地索引和检索数据。它是一种平衡,每个非叶子节点最多包m个子节点,其中m为阶数。具体回答如下: MySQL B的特点有以下几点: 1. 多路搜索:B的非叶子节点可以拥有多个子节点,这样可以大幅减少层数,提高搜索效率。 2. 平衡:B的每个节点从根节点到叶子节点的路径长度相等,这样可以保持的平衡,避免出现极端情况导致搜索效率下降。 3. 顺序存储:B的节点通过顺序存储在磁盘上,这样可以提高IO效率,减少磁盘读写次数。 4. 自平衡:插入或删除一个节点后,B会通过旋转、分裂或合并等操作重新平衡,保持的平衡性。 5. 提供快速的索引和检索:通过B,可以快速地定位到所需数据的位置,减少了遍历的时间。 对于MySQL面试题中关于B的问题,可能会有以下几种考察角度: 1. 数据库索引:B在数据库中广泛应用于索引的实现,可以通过B迅速地定位到所需数据的位置。 2. 插入和删除操作:B的自平衡特性使得插入和删除操作的时间复杂度为O(logn),保证了高效的修改操作。 3. 阶数的选择:阶数m的选择会影响B的节点个数和的高度,进而影响查询效率和内存占用,需要根据实际应用场景进行合理选择。 4. B+和B-:MySQL中还存在B+和B-等变种,可以对其进行介绍和比较。 总结来说,MySQL B是一种用于数据库索引的多路搜索平衡,通过自平衡、顺序存储等特性,提供快速的索引和检索功能。理解B的原理和应用场景对于数据库快速查询和修改操作非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沐雨风栉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值