数据结构与算法试题(5)

2019-03-15 19:05

为方便起见,设各种字符的权值w={5,29,7,8,14,23,3,11}。因为n=8,所以要构造的赫夫曼树共有m=2n-1=2*8-1=15个结点。生成的赫夫曼树为下图所示:

0 1 0 29 1 0 5 1 3 0 14 7 0 1 1 1 8 0 1 0

23 11 赫夫曼编码为:概率为0.23的字符编码为:00 概率为0.11的字符编码为:010

概率为0.05的字符编码为:0110 概率为0.03的字符编码为:0111 概率为0.29的字符编码为:10

概率为0.14的字符编码为:110 概率为0.07的字符编码为:1110

概率为0.08的字符编码为:1111

14、已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是EBCDAFHIGJ, 试画出这棵二叉树,并给出这棵二叉树的后序遍历序列。 答案:根据前序序列和中序序列能得到唯一的二叉树,所得二叉树如图:

A

E B F C G D H IJ 这棵二叉树的后序遍历序列为:EDCBIHJGFA 15、在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?

答案:结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。

16、 对于一个高度为h的AVL树,其最少结点数是多少?反之,对于一个有n个结点的AVL树, 其最大高度是多少? 最小高度是多少?

答案:设高度为h(空树的高度为-1)的AVL树的最少结点为Nh,则Nh = Fh+3 -1。 Fh 是斐波那契数。又设AVL树有n个结点,则其最大高度不超过3/2*log2(n+1), 最小高度为「log2(n+1) ┐-1。

17、7-7 设有序顺序表中的元素依次为017, 094, 154, 170, 275,503, 509, 512, 553, 612, 677, 765, 897, 908。试画出对其进行折半搜索时的判定树, 并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度。

答案:折半搜索时的判定树为: 509 154 677 275

ASLSUCC=1/14(1+2*2+3*4+4*7)=45/14 ASLUNSUCC=1/15(3*1+4*14)=59/15

18、试对下图所示的AOE网络

017 553 503 897 094 170 512 612 765 908

(1) 这个工程最早可能在什么时间结束。

(2) 求每个事件的最早开始时间Ve[i]和最迟开始时间Vl[i]。 (3) 求每个活动的最早开始时间e( )和最迟开始时间l( )。

(4) 确定哪些活动是关键活动。画出由所有关键活动构成的图,指出哪些活动加速可使整个工程提前完成。

答案:按拓朴有序的顺序计算各个顶点的最早可能开始时间Ve和最迟允许开始时间Vl,然后再计算各个活动的最早可能开始时间e和最迟允许开始时间l,根据l-e是否等于0来确定关键活动,从而确定关键路径。 Ve Vl

① 0 0 ③ 19 19 ② 15 15 ④ 29 37 ⑤ 38 38 ⑥ 43 43

e L l-e <1,2> 0 17 17 <1,3> 0 0 0 <3,2> 15 15 0 <2,4> 19 27 8 <2,5> 19 19 0 <3,5> 15 27 12 <4,6> 29 37 8 <5,6> 38 38 0 此工程最早完成时间为43,关键路径为<1,3><3,2><2,5><5,6>

19、已知有五个待排序的记录,其关键字分别为:256,301,751,129,937,863,742,694,076,438请用快速排序的方法将它们从小到大排列。 答案:

第一次排序:(076,129),256,(751,937,863,742,694,301,439) 第二次排序:076,129,256,(438,301,694,742),751,(863,937) 第三次排序:076,129,256,301,438,(694,742),751,(863,937) 第四次排序:076,129,256,301,438,694,742,751,(863,937) 第五次排序:076,129,256,301,438,694,742,751,863,937

20、设有150个记录要存储到散列表中, 并利用线性探查法解决冲突, 要求找到所需记录的平均比较次数不超过2次。试问散列表需要设计多大? (设?是散列表的装载因子,则有ASLsucc = ( 1+1/ (1-?) )/2)。

答案:已知要存储的记录数为n=150,查找成功的平均查找长度为ASLsucc ≤2,则有:ASLsucc =1/2(1+1/(1-?))≤2 解得 ?≤2/3 ,又有:?=n/m=150/m 两式联立得:150/m≤2/3,解得:m≥225. 所以散列表需要设计225个单位。 五、算法分析题

1、给出下列递归过程的执行结果 void unknown ( int w ) {

if ( w ) {

unknown ( w-1 );

for ( int i = 1; i <= w; i++ ) cout << w<<' ';

cout << endl;

} }

调用语句为 unknown (4)。 答案:

(1) 1 2 2

3 3 3

4 4 4 4

2、给出递归过程的执行结果 void unknown ( int n ) {

cout << n % 10 ;

if ( int ( n / 10 ) ) unknown ( int ( n / 10 ) ); }

调用语句为unknown ( 582 )。 答案: 285

3、给出递归过程的执行结果

int unknown ( int m ) {


数据结构与算法试题(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京市控制性详细规划(街区层面)编制技术要点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: