数据结构与算法测试题

1.完全二叉树的第5层有9个节点,该完全二叉树总计有多少个节点(  B   ).

A.41 B.24 C.40 D.25

完全二叉树,说明前四层都是满结点,第五层有九个结点,故有:

2^4  -1=15       15+9=24

2.具有21个顶点的无向图至少有多少条边才能形成连通图               (  B   ).

A.21 B.20 C.22 D.210

3.假设以行序为主序存储二维数组A=array[1..40,1..80],设每个数据元素占2个存储单元,基地址LOC[1,1]为8900,则LOC[21,14]的存储位置为(  B    ).

A.12288 B.12126 C.12286 D.12128

二维数组A[1..m,1..n]若按行优先存储,那么A的任意一个元素A[i][j]的存储首地址Loc(i,j)可由下式确定:Loc(i,j)=Loc(1,1)+[n×(i-1)+j-1]×b,其中,Loc(1,1)是第一个元素A[1][1]的首地址,b是每个元素占用的存储单元个数。代入数据便得Loc(21,14)=8900+[80×(21-1)+14-1]×2=12126。

4.完全二叉树顺序存储,结点X的编号为27,则其右孩子结点的编号是(  A   )

A.55 B.54 C.28 D.26

参考P159性质5

5.具有11个结点的二叉树使用二叉链表进行存储,其中空指针的数目是(  B   ).

A.22 B.12 C.10 D.55

n个结点的二叉链表中,有2n个链域,每一条非空链域对应一条树枝,而树支的个数为n-1,空节点个数为2n-(n-1)=n+1

6.一棵二叉树,度为2结点数为174,度为1结点数为186,则叶子结点数为(   C  ).

A.187 B.173 C.175 D.185

    n0=n2+1=174+1=175

7.已知序列3,16,33,37,57,65,66,83,85,100,112,则用折半查找法查找3需要进行( B   )次比较.

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

①定义3个用来记录索引值的变量,变量min记录当前范围最小索引值,初始值为0;变量max记录当前范围最大索引值,初始值为数组长度-1;变量mid记录当前当前范围最中间元素的索引值,初始值为(min+max) / 2

②使用循环,判断当前范围下,最中间元素值与指定查找的数值是否相等

若相等,结束循环,返回当前范围最中间元素的索引值mid

若不相等,根据比较结果,缩小查询范围为上一次查询范围的一般

      中间元素值比要查询的数值大,说明要查询的数值在当前范围的最小索引位置与中间索引位置之间,此时,更新查询范围为:

      范围最大索引值 = 上一次中间索引位置 -1;

      中间元素值比要查询的数值小,说明要查询的数值在当前范围的最大索引位置与中间索引位置之间,此时,更新查询范围为:

      范围最小索引值 = 上一次中间索引位置 +1;

      在新的查询范围中,更新中间元素值的位置,再次使用最中间元素值与指定查找的数值是否相等。

      中间索引值 = (范围最小索引值 +范围最大索引值) / 2;

③每次查询范围缩小一半后,使用if语句判断,查询范围是否小于0个元素,若小于0个元素,则说明指定数值没有查询到,返回索引值-1。

mid分别指向65,33,3

8.有28个叶子的哈夫曼树的结点总数为                           (   A  ).

A.55 B.56 C.57 D.783

哈夫曼树,则度为0的结点个数为N,度为2的结点个数为N-1,则结点总数为2N-1

9.具有47个顶点,1309条边的有向图,所有顶点度的和为(  B   ).

A.1081 B.2618 C.94 D.1309

向图和有向图中每个顶点的度等于该顶点的入度与出度之和

总度数(D)等于边数(e)的两倍。D=2e

 

1.假设一颗二叉树的先序序列为ABDFHEGC,中序序列为DFHBGEAC,请画出该二叉树。

 

2.给定关键字查找序列:8,96,82,33,36,56,58,58,73 ,请构造二叉排序树。

 

3.有向图如下所示,画出其邻接矩阵存储(包括顶点存储和索引).

 

有向图:行为出度,列为入度

 

4.对如下图所示的AOE网络,计算各事件(顶点)的最早开始时间和最迟开始时间。

 

最早发生时间:从前往后,前驱结点到当前结点所需时间,取最大值。

最迟发生时间:从后往前,后继结点的最迟发生时间-边权值,取最小值。

事件为顶点,活动为边。

 

 

 

5.已知一个无向图如下图所示,要求用普里姆算法构造最小生成树(从顶点A开始),画出构造过程。

 

6.已知一组关键字{19,84,57,18,92,68,73,39},请画出由该组关键字创建的大顶堆(画出结果即可。

 

7.设给定关键字输入序列为{93,44,56,90,123,112,112,96},用散列法散列0-10的地址区。散列函数为H(k)=(k)MOD 11,发生冲突时使用二次探测再散列。请构造哈希表,并将结果填入下表。

 

线性探测再散列

 

0

1

2

3

4

5

6

7

8

9

10

key

44

56

90

123

112

93

 

 

96

 

 

frequency

1

1

1

2

3

1

 

 

1

 

 

ASL=(1+1+1+2+3+1+1)/7=10/7

二次探测再散列

 

0

1

2

3

4

5

6

7

8

9

10

key

44

56

90

123

 

93

112

 

96

 

 

frequency

1

1

1

2

 

1

4

 

1

 

 

ASL=(1+1+1+2+1+4+1)/7=11/7

8.设用于通信的电文由a、b、c、d、e、f、g、h 等8个字母组成, 字母在电文中出现的频率分别为:20,8,8,1,10,3,5,14。请构造哈夫曼树,并给每出每个字母的哈夫曼编码。

 

 

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mez_Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值