数据结构习题课

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7
4
1
6
4
由此构造哈希表,用线性探测法冲突,计算平 均查找长度ASL。若用拉链法解决冲突情况又 如何?
参考答案
线性探测法(假设散列表的长度是8,下标从0
开始)
下标
元素
7
Li
6
Zhao
5
Sun
4
Wang
查找成功ASL =(1*5+3*1+7*1)/7
3
2
Zhang
1
Chen
=15/7
0
Liu
算法BST (t.pre,flag) /* 使用中根遍历和pre指针判断t是否是二叉查找树*/ B1 [特判]
flag TRUE. IF t = NULL THEN RETURN. B2 [中根遍历]
BST(left(t),pre,flag). IF(!flag) THEN RETURN. IF( pre!=NULL AND data(pre)>data(t) )
17
13
31
17
13
31
11
20 35
11
20 35
8 4
25
40
24
27
可编辑
插入数据9
17
13
31
11 8 4
20 35
25
40
24
27
17
13
31
11
8
4
9
20 35
25
40
24
27
删除17
17
13
31
11 8 4
20 35
25
40
24
27
20
13
31
11
25 35
8 4
24
27
a31 8
a44
1
3
4
8
1
4
26-30
32-37
19-24
39-43
45-50
ASL=(1+2*2+3*4+(4+5+6+7+8)*8+9*3)/50=284/50
8-10
已知下列关键词和它们对应的散列函数值:
key
Zhao Sun
H(key) 6
5
Li Wang Chen Liu Zhang
8-9
假设按下述递归方法进行顺序表的查找:若
表长n ≤10,则进行顺序查找,否则进行折 半查找。试画出对表长n =50的顺序表进行上
述查找时,描述该查找的判定树,并求出在 等概率情况下查找成功的平均查找长度。
参考答案
a12
1 a6 2 6 a2
1-5 7-11
13-17
a25
2
5
a38
3
a18
参考答案
a5
5
a2
a8
2
a1
a3
8
a6
a9
1
a2
3
6
a4
a7
9
a10
4
7
10
ASLsucc=(1+2*2+3*4+4*3)/10=29/10 ASLunsucc = (5*3 + 6*4)/11 = 39/11
8-8
对长度为12的有序表(a1,a2,…,a12)(其中 ai<aj,当i<j时)进行折半查找,在设定查找 不成功的情况时,关键词x<a1, x> a12, ai<x<ai+1 (i=1,2,…,11)等情况发生的概 率相等,则查找不成功的平均查找长度是多少 ?
(1)插入数据9 (2)删除节点17 (3)再删除节点13
参考答案
动态插入创建二叉查找树: (17,31,13,11,20,35,25,8,4,11,24,40,27)
17
17
31
17
13
31
17
13
31
17
13
31
17
13
31
11
11
20
11
20 35
(17,31,13,11,20,35,25,8,4,11,24,40,27)
40
再删除节点13
20
13
31
11
25 35
8 4
24
27
40
20
11
31
8 4
25 35
24
27
40
8-22
编写判定给定的二叉树是否是二叉查找树的算 法。
[提示]判定二叉树是否为二叉查找树是建立在 中根遍历的框架基础下,在遍历中附设一指针 pre指向当前访问节点的中根直接前驱,每访 问一个节点便比较前驱节点pre和此节点是否 有序,若遍历结束后各节点和其中根直接前驱 均满足有序,则此二叉树为二叉查找树;否则 ,只要有一个节点不满足,那么此二叉树就不 是二叉查找树。
THEN(flag FALSE. RETURN.). pre t. BST(right(t),pre,flag). ▌
C++
bool bst(BinTreeNode<T>* t, BinTreeNode<T>*& pre ) /*t指向根结点;pre指向t的中根前驱,初值NULL*/ {
if(t==NULL) return true; if(! bst(left(t),pre)) return false; if(pre &&pre->data > t->data)) return false; pre=t; return bst(right(t),pre); }
a6
6
a3
a9
3
a1
a4
9
a7
a11
1
a2
4
7
11
a5
a8 a10
a12
2
5
8 10 12
参考答案 a6
二叉判定树如下: a3
6
a9
3
a1
a4
9
a7
a11
1
a2
4
7
11
a5
a8 a10
a12
2
5
8 10 12
ASLUNSUCC = En/(n+1) = (3*3+4*10)/13= 49/13
B为第2个元素:2种 C为第2个元素:1种(高度为2) D为第2个元素:2种
以B为根的BST共2种(高度为2) 以C为根的BST共2种(高度为2) 以D为根的BST共5种(类似A) 一共有14种。高度为2的有6种,为3的有8种
8-7
画出对长度为10的有序表进行折半查找的判定 树,并求其等概率时查找成功的平均查找长度 。
拉链法(假设散列表长度是8,下标从0开始)
下标 7
指针
Li
Λ
6
Zhao
Liu Λ
5
Sun Λ
4
3
Λ
Wang
பைடு நூலகம்
Zhang Λ
2
Λ
1
Chen Λ
0
Λ
查找成功ASL=(1*5+2*1+2*1)/7=9/7
合并拉链法(算法C)
拉链法(假设散列表的长度是8,下标从0开始

下标 元素
Link
7
Li
-1
6
Zhao
3
5
Sun
-1
4 Wang
2
3
Liu
-1
2 Zhang
-1
1 Chen
-1
0
查找成功ASL=(1*5+2*1+2*1)/7=9/7
8-13
已知序列 (17,31,13,11,20,35,25,8,4,11,24,40,27), 请画出该序列的二叉查找树,并分别给出下列 操作后的二叉查找树。
数据结构习题 第 8 章
吉林大学计算机科学与技术学院 谷方明
第8章作业
8-4 8-7,8-8,8-9,8-10 8-13 8-22,8-23
8-4
设有关键词为A、B、C和D,按照不同的输入 顺序,共可能组成多少种不同的二叉查找树 。请画出其中高度较小的6种。
参考答案
以A为根的BST共5种
相关文档
最新文档