南京邮电大学数据结构A第5章

合集下载

数据结构第五章 查找 答案

数据结构第五章 查找 答案

数据结构与算法上机作业第五章查找一、选择题1、若构造一棵具有n个结点的二叉排序树,在最坏情况下,其高度不超过 B 。

A. n/2B. nC. (n+1)/2D. n+12、分别以下列序列构造二叉排序数(二叉查找树),与用其他3个序列所构造的结果不同的是 C :A. (100, 80, 90, 60, 120, 110, 130)B. (100, 120, 110, 130, 80, 60, 90)C. (100, 60, 80, 90, 120, 110, 130)D. (100, 80, 60, 90, 120, 130, 110)3、不可能生成下图所示的二叉排序树的关键字的序列是 A 。

A. 4 5 3 1 2B. 4 2 5 3 1C. 4 5 2 1 3D. 4 2 3 1 54、在二叉平衡树中插入一个结点造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作 C 型调整使其平衡。

A. LLB. LRC. RLD. RR5、一棵高度为k的二叉平衡树,其每个非叶结点的平衡因子均为0,则该树共有 C 个结点。

A. 2k-1-1B. 2k-1+1C. 2k-1D. 2k+16、具有5层结点的平衡二叉树至少有 A 个结点。

A. 12B. 11C. 10D. 97、下面关于B-和B+树的叙述中,不正确的是 C 。

A. B-树和B+树都是平衡的多叉树B. B-树和B+树都可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索8、下列关于m阶B-树的说法错误的是 D 。

A. 根结点至多有m棵子树B. 所有叶子结点都在同一层次C. 非叶结点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D. 根结点中的数据是有序的9、下面关于哈希查找的说法正确的是 C 。

A. 哈希函数构造得越复杂越好,因为这样随机性好,冲突小B. 除留余数法是所有哈希函数中最好的C. 不存在特别好与坏的哈希函数,要视情况而定D. 若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单地将该元素删去即可10、与其他查找方法相比,散列查找法的特点是 C 。

南邮_数据结构课后习题答案讲解

南邮_数据结构课后习题答案讲解

?
?
?1 4 7 ?
?
?
?4 4 9 ?
?4 4 9 ?
4.7 求对题图4-1的稀疏矩阵执行矩阵转置时数组
num[]和k[]的值。
col
0
1
2
3
4
num[col] 1
0
2
1
2
k[col]
0
1
1
3
4
2020/2/8
14
第六章 习题讲解
6-2. 对于三个结点 A,B和C,可分别组成多少不同 的无序树、有序树和二叉树?
int i,j,sum=0;
for (i=0;temp[i]<x&&i<n;i++); //找到首个大于等于 x的元素位置 i
if(i>n-1) return; //没有符合条件的元素
ffoorr ((jj==ii;;ljs<tn[j;]<) =y&&j<n;j++); if (lst[j]>y//)找到首个//大大于于yy的的元元素素前位移置 j
?0 0 ???3 0
6 0
0 0
0? 7??
行三元组:???10
2 0
6 ?列三元组:?1
? 3??
??0
0 2
?3?
6
? ?
? 0 0 0 0 0?
?1 4 7 ?
?3 2 ?8?
? ?
0
0 ? 8 10 0??
??3 2 ?8??
??3
3
10
? ?
?? 0 0 0 0 9??
?3 3 10 ?
(2)void Search_Delete(List *lst, T x,T y)

数据结构 5数组和广义表A

数据结构 5数组和广义表A
12
1 Status Locate(Array A,va_list ap,int &off) 2{ 3 //若ap指示的各下标值合法,则求出该元素在A中,相对地
址off
4 off=0; 5 for(i=0;i<A.dim;++i) 6 { 7 ind=va_arg(ap,int); 8 if(ind<0||ind>A.bounds[i]) return OVERFLOW; 9 off+=A.constants[i] *ind; 10 } 11 return OK; 12 }
行数 总列数,即 第2维长度 元素个数
ij
补充:计算二维数组元素地址的通式
设一般的二维数组是A[c1..d1, c2..d2],这里c1,c2不一定是0。
单个元素 长度
二维数组列优先存储的通式为: LOC(aij)=LOC(ac1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L
6
例1〖软考题〗:一个二维数组A[1..6, 0..7],每个数组元素
16
5.4
1、定义:
广义表的定义
广义表是线性表的推广,也称为列表(lists) 记为: LS = ( a1 , a2 , ……, an ) 广义表名 表头(Head) 表尾 (Tail) n是表长
在广义表中约定:
① 第一个元素是表头,而其余元素组成的表称为表尾; ② 用小写字母表示原子类型,用大写字母表示列表。
13
1 Status Value(Array A,ElemType &e,…){ 2 //A是n维数组,e为元素变量,随后是n个下标值,若各下
标不超界,则e赋值为所指定的A的元素值,即将指定元素值 读到e变量中。

数据结构答案第5章

数据结构答案第5章

第 5 章树和二叉树1970-01-01第 5 章树和二叉树课后习题讲解1. 填空题⑴树是n(n≥0)结点的有限集合,在一棵非空树中,有()个根结点,其余的结点分成m(m>0)个()的集合,每个集合都是根结点的子树。

【解答】有且仅有一个,互不相交⑵树中某结点的子树的个数称为该结点的(),子树的根结点称为该结点的(),该结点称为其子树根结点的()。

【解答】度,孩子,双亲⑶一棵二叉树的第i(i≥1)层最多有()个结点;一棵有n(n>0)个结点的满二叉树共有()个叶子结点和()个非终端结点。

【解答】2i-1,(n+1)/2,(n-1)/2【分析】设满二叉树中叶子结点的个数为n0,度为2的结点个数为n2,由于满二叉树中不存在度为1的结点,所以n=n0+n2;由二叉树的性质n0=n2+1,得n0=(n+1)/2,n2=(n-1)/2。

⑷设高度为h的二叉树上只有度为0和度为2的结点,该二叉树的结点数可能达到的最大值是(),最小值是()。

【解答】2h -1,2h-1【分析】最小结点个数的情况是第1层有1个结点,其他层上都只有2个结点。

⑸深度为k的二叉树中,所含叶子的个数最多为()。

【解答】2k-1【分析】在满二叉树中叶子结点的个数达到最多。

⑹具有100个结点的完全二叉树的叶子结点数为()。

【解答】50【分析】100个结点的完全二叉树中最后一个结点的编号为100,其双亲即最后一个分支结点的编号为50,也就是说,从编号51开始均为叶子。

⑺已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点。

则该树中有()个叶子结点。

【解答】12【分析】根据二叉树性质3的证明过程,有n0=n2+2n3+1(n0、n2、n3分别为叶子结点、度为2的结点和度为3的结点的个数)。

⑻某二叉树的前序遍历序列是ABCDEFG,中序遍历序列是CBDAFGE,则其后序遍历序列是()。

【解答】CDBGFEA【分析】根据前序遍历序列和后序遍历序列将该二叉树构造出来。

数据结构(陈慧南编 C++描述)南京邮电大学 课后答案 DS习题答案01

数据结构(陈慧南编 C++描述)南京邮电大学 课后答案 DS习题答案01
template <class T>
www.khd课后a答w案.网com
bool LinkedStack<T>::Push(const T x) {
Node <T> *q=new Node<T>; q->data=x; q->link=top; top=q; return true; }
template <class T> bool LinkedStack<T>::Pop() {
Node<T> *q; while (top){
q=top->link; delete top; top=q; } }
第四章 数组与字符串
1. 给出三维数组元素 A[i][j][k]的存储地址 loc(A[i][j][k])。 答: 设有三维数组声明为 A[n1][n2][n3],每个元素占 k 个存储单元,则
Node<T> *q; while (top){
q=top->link; delete top; top=q; } }
template <class T> bool LinkedStack<T>::IsEmpty() const {
return !top; }
template <class T> bool LinkedStack<T>::IsFull() const {
www.khd课后a答w案.网com
第一章 绪论
1.( 第 18页,第(5)题) 确定下列各程序段的程序步,确定划线语句的执行次数,计算它们的渐近时间复杂度。
(1) i=1; k=0; do { k=k+10*i; i++; } while(i<=n-1) 划线语句的执行次数为 n-1 。

数据结构第五章图习题

数据结构第五章图习题

05 图【单选题】1. 设无向图G 中有五个顶点,各顶点的度分别为2、4、3、1、2,则G 中边数为(C )。

A、4条 B、5条 C、6条 D、无法确定2. 含n 个顶点的无向完全图有(D )条边;含n 个顶点的有向图最多有(C )条弧;含n 个顶点的有向强连通图最多有(C )条弧;含n 个顶点的有向强连通图最少有(F)条弧;设无向图中有n 个顶点,则要接通全部顶点至少需(G )条边。

A 、n 2B 、n(n+1)C 、n(n-1)D 、n(n-1)/2E 、n+1F 、nG 、n-13. 对下图从顶点a 出发进行深度优先遍历,则(A )是可能得到的遍历序列。

A 、acfgdebB 、abcdefgC 、acdgbefD 、abefgcd对下图从顶点a 出发进行广度优先遍历,则(D )是不可能得到的遍历序列。

A 、abcdefgB 、acdbfgeC 、abdcegfD 、adcbgef4. 设图G 的邻接矩阵A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡010101010,则G 中共有(C )个顶点;若G 为有向图,则G 中共有(D )条弧;若G 为无向图,则G 中共有(B )条边。

A 、1B 、2C 、3D 、4E 、5F 、9G 、以上答案都不对5. 含n 个顶点的图,最少有(B )个连通分量,最多有(D )个连通分量。

A 、0B 、1C 、n-1D 、n6. 用邻接表存储图所用的空间大小(A )。

A 、与图的顶点数和边数都有关B 、只与图的边数有关C 、只与图的顶点数有关D 、与边数的平方有关7. n 个顶点的无向图的邻接表最多有(B )个表结点。

A 、n 2B 、n(n-1)C 、n(n+1)D 、n(n-1)/28. 无向图G=(V ,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是(D )。

数据结构A第1章(南邮)

数据结构A第1章(南邮)
ADT 1.1 栈抽象数据类型 ADT Stack { Data: (描述逻辑结构) 0个或多个元素的线性序列(a0,a1, ,an-1), 遵循LIFO原则。 Operations: (描述运算的定义) Create():创建一个空栈。 Destroy():撤消一个栈。 Push(x):元素x插入栈顶。 Pop():删除栈顶元素。 Top(x):在x中返回栈顶元素。 }
程序步数为2n+3。
41
1.5.3 渐近时间复杂度
渐近时间复杂度
使用大 O 记号表示的算法的时间复杂性,称为算法的渐
近时间复杂度,简称时间复杂度。
大O记号 如果存在两个正常数 c 和 n0 ,使得对所有的 n , nn0 ,有 f(n) c g(n) 则有 f(n)=O(g(n))。
42
渐近时间复杂度 使用大 O 记号表示的算法的时间复杂性,称为算法的渐
结点存储块分成两部分,元素本身和该元素后继元素所 在结点的存储地址。
Data
Link
20
小结
逻辑结构 概念
面向 关系
存储结构 数据及其关系在计 算机内的组织方式 面向计算机
数据元素之间逻 辑关系的描述 面向应用问题
存储结构是逻辑结构在计算机内的映像
21
1.2.4 数据结构的运算
• 数据结构最常见的运算 创建运算:创建一个数据结构; 清除运算:删除数据结构中的全部元素; 插入运算:在数据结构的指定位置上插入一 个新元素; 删除运算:将数据结构中的某个元素删除; ……
2.
数据类型 一个数据类型定义了一个值的集合以及作 用于该值集的操作的集合。 即一组值和一组操作。
26
3.抽象数据类型 抽象数据类型( Abstract Data Type, ADT )是一个 数据类型,其主要特征是该类型的对象及其操作的规 范 , 与该类型对象的表示和操作的实现分离,实行封 装和信息隐蔽,即使用和实现分离。 使用和实现分离:使用者通过规范使用该类型的数据,

南邮计算机网络课后答案第五章资料

南邮计算机网络课后答案第五章资料

第五章传输层5—01 试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。

各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。

5—02 网络层提供数据报或虚电路服务对上面的运输层有何影响?答:网络层提供数据报或虚电路服务不影响上面的运输层的运行机制。

但提供不同的服务质量。

5—03 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是面向无连接的?答:都是。

这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。

5—04 试用画图解释运输层的复用。

画图说明许多个运输用户复用到一条运输连接上,而这条运输连接有复用到IP数据报上。

5—05 试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。

答:VOIP:由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,但对传输时延的变化较敏感。

有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。

因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。

5—06 接收方收到有差错的UDP用户数据报时应如何处理?答:丢弃5—07 如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由答:可能,但应用程序中必须额外提供与TCP相同的功能。

5—08 为什么说UDP是面向报文的,而TCP是面向字节流的?答:发送方UDP 对应用程序交下来的报文,在添加首部后就向下交付IP 层。

UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

《数据结构A》第05章——01

《数据结构A》第05章——01
南京邮电大学计算机学院 陈慧南 2006年9月
一个结点拥有的子树数称 为该结点的度。度为零的 结点称为叶子,其余结点 称为分支结点。树中结点 的最大的度称为树的度。 树是层次结构的,规定根 结点的层次为1,其结点 的层次等于其双亲结点的 层次加1。树中结点的最 大层次称为该树的高度。
南京邮电大学计算机学院 陈慧南 2006年9月
南京邮电大学计算机学院 陈慧南 2006年9月
定义5.2 树是包括n个结点的有限非空集合T, 其中,一个特定的结点r称为根,其余结点 T-{r}划分成m(m0)个互不相交的子集 T1,T2,,Tm,其中,每个子集都是树,被 称为树根r的子树。
南京邮电大学计算机学院 陈慧南 2006年9月
5.1.2 基本术语
古意大利语 古希腊语 日耳曼语
拉丁语
希腊语
北日耳曼语
西日耳曼语
西 班 牙 语


意 大 利 语
冰 岛
ห้องสมุดไป่ตู้挪 威
瑞 典

荷 兰







图5-1 西欧语言谱系图
南京邮电大学计算机学院 陈慧南 2006年9月
5.1.1 树的定义
定义5.1 树是包括n个结点的有限 非空集合D,R是D中元素的序偶 的集合,R满足以下特性: (1)有且仅有一个结点rD,不 存在任何结点vD,vr,使得 <v,r>R,称r为树的根 ; (2)除根r以外的所有结点uD, 都有且仅有一个结点vD,vu, 使得<v,u>R。 这样定义的树也称有根树,简称 树。
树中元素常称为结点 。 根和它的子树根(如果 存在)之间形成一条 边 。如果从某个结点 沿着树中的边可到达另 一个结点,则称这两个 结点间存在一条路径 。

数据结构第5章

数据结构第5章

第5章:数组和广义表 1. 了解数组的定义;填空题:1、假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 288 B ;末尾元素A 57的第一个字节地址为 1282 。

2、三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 行下标 、 列下标 和 元素值 。

2. 理解数组的顺序表示方法会计算数组元素顺序存储的地址;填空题:1、已知A 的起始存储位置(基地址)为1000,若按行存储时,元素A 14的第一个字节地址为 (8+4)×6+1000=1072 ;若按列存储时,元素A 47的第一个字节地址为 (6×7+4)×6+1000)=1276 。

(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A 57可知,是从0行0列开始!) 2、设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 8950 。

答:不考虑0行0列,利用列优先公式: LOC(a ij )=LOC(a c 1,c 2)+[(j-c 2)*(d 1-c 1+1)+i-c 1)]*L 得:LOC(a 32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950选择题:( A )1、假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。

(无第0行第0列元素)A .16902B .16904C .14454D .答案A, B, C 均不对 答:此题(57列×60行+31行)×2字节+10000=16902( B )2、设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素a i,j (i ≤j), 在一维数组B 中下标k 的值是:A .i(i-1)/2+j-1B .i(i-1)/2+jC .i(i+1)/2+j-1D .i(i+1)/2+j3、从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏内。

南邮数据结构答案

南邮数据结构答案

第1 章绪论一、基础题1. A2. C3. C4. A5. C二、扩展题1.数据是计算机加工处理的对象;数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理;数据项是组成数据元素的、不可分割的最小单位。

2.数据结构是按某种逻辑关系组织起来的数据元素的集合,使用计算机语言描述并按一定的存储方式存储在计算机中,并在其上定义了一组运算。

3.集合结构、线性结构、树形结构和图形结构。

集合结构中,元素之间没有关系;线性结构中,元素之间存在一对一的关系;树形结构中,元素之间存在一对多的关系,其中最多只有一个元素没有前驱元素,这个元素就是根;图形结构中,元素之间存在多对多的关系。

4.顺序存储、链式存储、索引存储和散列存储。

5.一个算法是对特定问题的求解步骤的一种描述,是指令的有限序列。

其特征包括:➢输入:算法有零个或多个输入➢输出:算法至少产生一个输出➢确定性:算法的每一条指令都有确切的定义,没有二义性。

➢能行性/可行性:可以通过已经实现的基本运算执行有限次来实现➢有穷性:算法必须总能在执行有限步之后终止6.联系:程序是计算机指令的有序集合,是算法用某种程序设计语言的表述,是算法在计算机上的具体实现。

区别:在语言描述上不同,程序必须是用规定的程序设计语言来写,而算法的描述形式包括自然语言、伪代码、流程图和程序语言等;算法所描述的步骤一定是有限的,而程序可以无限地执行下去,比如一个死循环可以称为程序,但不能称为算法。

7.正确性:算法的执行结果应当满足功能需求,无语法错误,无逻辑错误简明性:思路清晰、层次分明、易读易懂,有利于调试维护健壮性:当输入不合法数据时,应能做适当处理,不至于引起严重后果效率:有效使用存储空间和有高的时间效率最优性:解决同一个问题可能有多种算法,应进行比较,选择最佳算法可使用性:用户友好性8(1)执行次数为n-1(n>=2),n=1时执行1次;时间复杂度为O(n)。

(2)执行次数为⌈log3n⌉;时间复杂度为O(logn)(3) 执行次数为n2;时间复杂度为O(n2)(4)执行次数为⌊√n⌋ + 1;时间复杂度为O(√n)第2 章线性表1.A2.D3.B4.C5.B6.D7.D8.C9.A10.D1.编写程序实现对顺序表逆置。

数据结构-第5章--数组练习题

数据结构-第5章--数组练习题

数据结构-第5章--数组练习题第5章数组一、选择题3.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为(A)。

A.BA+141B.BA+180C.BA+222D.BA+2254.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(A)。

A.808B.818C.1010D.10205.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是()。

1195A.1175B.1180C.1205D.12107.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为()。

供选择的答案:A.198B.195C.1972+64某3=19410.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(iA.i某(i-1)/2+jB.j某(j-1)/2+iC.i某(i+1)/2+jD.j某(j+1)/2+i11.设A是n某n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为(C)。

A.i(i-l)/2+jB.j(j-l)/2+iC.j(j-l)/2+i-1D.i(i-l)/2+j-112.A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是(AB)。

数据结构第五章参考答案

数据结构第五章参考答案

习题51.填空题(1)已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为(___________)。

答案:129(2)3个结点可构成(___________)棵不同形态的二叉树。

答案:5(3)设树的度为5,其中度为1~5的结点数分别为6、5、4、3、2个,则该树共有(___________)个叶子。

答案:31(4)在结点个数为n(n>1)的各棵普通树中,高度最小的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

高度最大的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

答案:2 n-1 1 n 1 n-1(5)深度为k的二叉树,至多有(___________)个结点。

答案:2k-1(6)(7)有n个结点并且其高度为n的二叉树的数目是(___________)。

答案:2n-1(8)设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为(___________),最小结点数为(___________)。

答案:2k+1-1 k+1(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT (X)的编号为()。

答案:24(10)已知一棵完全二叉树中共有768个结点,则该树中共有(___________)个叶子结点。

答案:384(11)(12)已知一棵完全二叉树的第8层有8个结点,则其叶子结点数是(___________)。

答案:68(13)深度为8(根的层次号为1)的满二叉树有(___________)个叶子结点。

答案:128(14)一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是(___________)。

答案:ABCDEF(15)某二叉树结点的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,则该二叉树结点的前序遍历序列为(___________),该二叉树对应的树林包括(___________)棵树。

数据结构与算法第5章课后答案

数据结构与算法第5章课后答案

page: 1The Home of jetmambo - 第 5 章树和二叉树第 5 章树和二叉树(1970-01-01) -第 5 章树和二叉树课后习题讲解1. 填空题⑴树是n(n&ge;0)结点的有限集合,在一棵非空树中,有()个根结点,其余的结点分成m (m>0)个()的集合,每个集合都是根结点的子树。

【解答】有且仅有一个,互不相交⑵树中某结点的子树的个数称为该结点的(),子树的根结点称为该结点的(),该结点称为其子树根结点的()。

【解答】度,孩子,双亲⑶一棵二叉树的第i(i&ge;1)层最多有()个结点;一棵有n(n&gt;0)个结点的满二叉树共有()个叶子结点和()个非终端结点。

【解答】2i-1,(n+1)/2,(n-1)/2【分析】设满二叉树中叶子结点的个数为n0,度为2的结点个数为n2,由于满二叉树中不存在度为1的结点,所以n=n0+n2;由二叉树的性质n0=n2+1,得n0=(n+1)/2,n2=(n-1)/2。

⑷设高度为h的二叉树上只有度为0和度为2的结点,该二叉树的结点数可能达到的最大值是(),最小值是()。

【解答】2h -1,2h-1【分析】最小结点个数的情况是第1层有1个结点,其他层上都只有2个结点。

⑸深度为k的二叉树中,所含叶子的个数最多为()。

【解答】2k-1【分析】在满二叉树中叶子结点的个数达到最多。

⑹具有100个结点的完全二叉树的叶子结点数为()。

【解答】50【分析】100个结点的完全二叉树中最后一个结点的编号为100,其双亲即最后一个分支结点的编号为50,也就是说,从编号51开始均为叶子。

⑺已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点。

则该树中有()个叶子结点。

【解答】12【分析】根据二叉树性质3的证明过程,有n0=n2+2n3+1(n0、n2、n3分别为叶子结点、度为2的结点和度为3的结点的个数)。

⑻某二叉树的前序遍历序列是ABCDEFG,中序遍历序列是CBDAFGE,则其后序遍历序列是()。

南京邮电大学数据结构A第6章

南京邮电大学数据结构A第6章

(21,25,28,33,36,45) 33 搜索成功!
35 (21,25,28,33,36,45) 搜索失败!
6.2 顺序搜索
6.2.2 有序表的顺序搜索
程序6.4 顺序搜索有序表 const int Infinity = 1000; template <class T> ResultCode ListSet<T>::Search(T& x)const { l[n] = Infinity; for (int i=0;l[i]<x;i++) ; //当list[i]的关键字值大于等于 // x的关键字值时,退出循环 if (l[i]==x) { return Success; //搜索成功 } return NotPresent; //搜索失败 }
template<class K, class D> Struct E { operator K() const{return key;} //使元素间的比较视为关键字间的比较 K key; D data; };
其中,K称为关键字类型,应为可比较大小的类型。 key为关键字:用来标识一个数据元素的某个数据项。
6.3 二分搜索
6.3.2 对半搜索
由分割点的不同,可以得到不同的二分搜索方法。如:对 半搜索、一致对半搜索、斐波那契搜索和插值搜索等。
对半搜索是二分搜索中的一种,分割点为表的中点元素。
若当前搜索的子表为 (alow,alow+1,…,ahigh) 则 i=(low+high)/2 其中,i、low 和 high均为元素在表中的序号,low表示表的左 端,high表示表的右端。
6.3 二分搜索
6.3.2 对半搜索 对半搜索的例子 (1) key=66

数据结构第五章数组和广义表

数据结构第五章数组和广义表

数据结构第五章数组和广义表(总6页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第五章数组和广义表:习题习题一、选择题1.假设以行序为主序存储二维数组A[1..100,1..100],设每个数据元素占两个存储单元,基地址为10,则LOC(A[5,5])=( )。

A. 808B. 818C. 1010D. 10202.同一数组中的元素( )。

A. 长度可以不同 B.不限 C.类型相同 D. 长度不限3.二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10。

从供选择的答案中选出应填入下列关于数组存储叙述中( )内的正确答案。

(1)存放A至少需要( )个字节。

(2)A的第8列和第5行共占( )个字节。

(3)若A按行存放,元素A[8]【5]的起始地址与A按列存放时的元素( )的起始地址一致。

供选择的答案:(1)A. 90 B. 180 C. 240 D. 270(2) A. 108 B. 114 C. 54 D. 60(3)[8][5] B. A[3][10] [5][8] [O][9]4.数组与一般线性表的区别主要是( )。

A.存储方面B.元素类型方面C.逻辑结构方面D.不能进行插入和删除运算5.设二维数组A[1..m,1..n]按行存储在数组B[1..m×n]中,则二维数组元素A[i,j]在一维数组B中的下标为( )。

A. (i-l)×n+jB. (i-l)×n+j-lC.i×(j-l) D. j×m+i-l6.所谓稀疏矩阵指的是( )。

A.零元素个数较多的矩阵B.零元素个数占矩阵元素中总个数一半的矩阵C.零元素个数远远多于非零元素个数且分布没有规律的矩阵D.包含有零元素的矩阵7.对稀疏矩阵进行压缩存储的目的是( )。

A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D. 降低运算的时间复杂度8.稀疏矩阵一般的压缩存储方法有两种,即( )。

大学数据结构课件--第5章 数组和广义表

大学数据结构课件--第5章 数组和广义表

a 32 a 33 a 34 0 0
a 43 a 44 a 45 0
a 54 a 55 a 56 a 65 a 66
5.3.2 稀疏矩阵
稀疏矩阵的存储:如何表示非零元素的位置信息 1. 三元组表:每个元素用一个三元组(i,j,v)来表示。 i j v
0 1 6 1 1 6 2 3 8 12 9
2
3 4 5 6 7 8
2
5.2 数组的顺序表示和实现
a00 a00 a10 a01 存储单元是一维结构,而数组是个多维结构 , …… …… 则用一组连续存储单元存放数组的数据元素就有 am-1,0 a0,n-1 个次序约定问题。 a01 a10
a11
……
a11
……
二维数组可有两种存储方式: am-1,1 a1,n-1
……
K=
i*n-i(i-1)/2+j-i n(n+1)/2
当 i≤j 当i>j
0 a11 ... a1n-1 ... ... ... ... 0 0 0 an-1n-1
当i ≤ j时,a[i][j]是非零元素, a[i][j]前面有i行,共有n+(n-1)+(n-2)+…(n-(i-1))
=i(n+[n-(i-1)])/2=i*n-i(i-1)/2个元素,a[i][j]前面有j列,共j-i个非零元素,
A m× n
( a10 a11 … a1,n-1 )
=
注:
( … … …… ) ( am-1,0 am-1,2 … am-1,n-1 ) ( ( ( (
① 数组中的元素都具有统一的类型; ② 数组元素的下标一般都具有固定的上界和下界,即数组一旦 被定义,它的维数和维界就不再发生改变; ③ 数组的基本操作简单:初始化、销毁、存取元素和修改元素值

数据结构课后习题答案第五章数组与广义表

数据结构课后习题答案第五章数组与广义表

第五章数组与广义表一、假设有二维数组A6*8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置(基地址)为1000。

计算:1、数组A的体积(即存储量);2、数组A的最后一个元素a57的第一个字节的地址;3、按行存储时,元素a14的第一个字节的地址;4、按列存储时,元素a47的第一个字节的地址;答案:1、(6*8)*6=2882、loc(a57)=1000+(5*8+7)*6=1282或=1000+(288-6)=12823、loc(a14)=1000+(1*8+4)*6=10724、loc(a47)=1000+(7*6+4)*6=1276二、假设按低下标(行优先)优先存储整数数组A9*3*5*8时第一个元素的字节地址是100,每个整数占四个字节。

问下列元素的存储地址是什么?(1)a0000(2)a1111(3)a3125 (4)a8247答案:(1)100(2)loc(a1111)=100+(1*3*5*8+1*5*8+1*8+1)*4=776(3) loc(a3125)=100+(3*3*5*8+1*5*8+2*8+5)*4=1784(4) loc(a8247)=100+(8*3*5*8+2*5*8+4*8+7)*4=4416五、设有一个上三角矩阵(aij)n*n,将其上三角元素逐行存于数组B[m]中,(m 充分大),使得B[k]=aij且k=f1(i)+f2(j)+c。

试推导出函数f1,f2和常数C(要求f1和f2中不含常数项)。

答:K=n+(n-1)+(n-2)+…..+(n-(i-1)+1)+j-i=(i-1)(n+(n-i+2))/2+j-i所以f1(i)=(n+1/2)i-1/2i2f2(j)=jc=-(n+1)九、已知A为稀疏矩阵,试从空间和时间角度比较采用两种不同的存储结构(二维数组和三元组表)完成∑aii运算的优缺点。

(对角线求和)解:1、二维数组For(i=1;i<=n;i++)S=s+a[i][i];时间复杂度:O(n)2、for(i=1;i<=m.tu;i++)If(a.data[k].i==a.data[k].j) s=s+a.data[k].value;时间复杂度:O(n2)二十一、当稀疏矩阵A和B均以三元组表作为存储结构时,试写出矩阵相加的算法,其结果存放在三元组表C中。

数据结构_南京邮电大学中国大学mooc课后章节答案期末考试题库2023年

数据结构_南京邮电大学中国大学mooc课后章节答案期末考试题库2023年

数据结构_南京邮电大学中国大学mooc课后章节答案期末考试题库2023年1.向最大堆84,49,82,26,29,46依次插入元素94,99,89,80,94,最终得到的最大堆是____________(提示:堆的元素插入操作需调用AdjustUp方法,请将答案表示成元素序列,并用半角逗号相隔,答案中不要有空格)。

参考答案:99,94,84,89,94,46,82,26,49,29,802.设有5×8的数组A,其每个元素占2个字节,已知A[0][4]在内存中的地址是120,按列优先顺序存储,A[2][6]的地址是_________ 。

参考答案:1443.以下选项_____是下图的深度优先遍历序列。

【图片】参考答案:K,D,A,B,E,C,F,G,J,H,I4.对最大堆序列95,61,66,9,19,27执行1次删除操作(提示:对优先级队列执行删除操作默认删除堆顶元素)后得到最大堆序列_____________(提示:堆元素删除操作需调用AdjustDown方法,请将答案表示成元素序列,并用半角逗号相隔,答案中不要有空格)。

参考答案:66,61,27,9,195.求该方法的渐近时间复杂度为__________.(注意填写答案时不要有空格,用x^y的方式表达x的y次方)void aFunc(int n) { for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { printf("Hello World\n"); } }}O(n^2)6.已知图的边集合:【图片】若采用邻接表存储,则顶点4对应的边结点链表中共有_________个边结点。

参考答案:27.用克鲁斯卡尔算法构造下图的最小代价生成树,第一条被加入生成树上的边一定是(E,C)。

【图片】参考答案:正确8.假设一棵含有18个结点的完全二叉树中,按层次从上到下、每层结点从左到右的顺序,从0开始编号,则编号为14的结点的左孩子编号为_______(如果孩子不存在,则填写NULL)。

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

补充: 等比数列的求和公式是 1 a n 1 1 a a a ... a 1 a
2 3 n
5.2 二叉树
5.2.2 二叉树的性质
5.2 二叉树
5.2.2 二叉树的性质
性质5.3 包含n个元素的二叉树的高度至少为 log2 (n+1) 根据性质 2 ,高度为 h 的二叉树最多有 2h –1 个结点(性质 2 ) ,因而n2h –1, 则有h log2(n+1)。 由于h是整数,所以h log2 (n+1)。
5.2 二叉树
5.2.1 二叉树的定义 树与二叉树的区别:
⑴ 树不能是空树,即至少有一个根结点。而二叉树可 以是空树。 ⑵ 一般树的子树之间是无序的。而二叉树中结点的子 树要区分左、右子树,即使只有一棵子树。 E F E F
⑶ 树中每个节点可有0棵或若干子树。而二叉树的每个
节点最多只能有2棵子树。
树不为空集合,树中至少有一个根结点,根结点没有前 驱,其余结点都有唯一的前驱结点。因此树形成层次结构。
5.1 树的基本概念
5.1.1 树的定义 1、树的定义
(1)有且仅有一个结点r∈D, 不存在任何结点v∈D,v≠r,使 得<v, r>∈R,称r为树的根。 (2)除根r以外的所有结点 u∈D,都有且仅有一个结点v ∈D, v≠u,使得<v,u>∈R。 D = {A, B, C, D, E, F, G} R = {<E, A>, <E, F>, <E, B>, <A,G>, <F, C>, <F, D>} ( 1) r = E (2)对于 u = F , 只有 v = E, 使得<v, u> ∈ R E A G C F D B
2 1
G
C
L N
D
J
3
4
5
5.1 树的基本概念
5.1.2 基本术语
无序树:如果树中结点的各子树之间的次序是不重要的, 可以交换位置。 下列是同一棵无序树: E E
A
G C
F
D
B
B
F
A
D
J
C G
L
L
M N
J
N
M
将左边树中所有结点的子树互换次序就是右边的树。
5.1 树的基本概念
5.1.2 基本术语
有序树:如果树中结点的各棵子树看成是从左到右有次序 的,则称该树为有序树。 下列是二棵有序树:
性质5.5 具有n个结点的完全二叉树的高度为log2 (n+1)。 性质2 高度为h的二叉树上至多有2h –1个结点。 证明:根据性质2
高度为h-1的完全二叉树结点个数最多为2h-1-1
高度为h的完全二叉树结点个数最多为2h-1 ① 高度为h的完全二叉树结点个数取值范围[2h-1 , 2h) ② 2h-1≤n<2h ② ① 2h-1 - 1< n ≤ 2h – 1 log2n<h ≤ log2n+1 log2(n+1) ≤ h<log2(n+1)+1 ∵h是整数 ∴h= h = log2 (n+1) log 2 n 1 结论: ⑴ n个结点的二叉树中完全二叉树最矮,高度为log2 (n+1)。 ⑵ n个结点的完全二叉树和二叉判定树的高度是一样的
5.2 二叉树
5.2.1 二叉树的定义
定义5.3
二叉树(binary tree)是结点的有限集合,该集合或 者为空集,或者是由一个根和两个互不相交的、称为该根 的左子树和右子树的二叉树组成。 上述定义表明二叉树可以为空集,因此,二叉树有 5 种基本形态。
(a)
(b)
(c)
(d)
(e)
图5-4 二叉树的五种基本形态
log 2 n 1
5.2 二叉树
5.2.2 二叉树的性质:完全二叉树的性质
性质5.6 假定对一棵有n个结点的完全二叉树中的结点,按从上 到下、从左到右的顺序,从0到n-1编号(见图5.6(c)),设树中 一个结点的序号为i,0i<n ,则有以下关系成立: (1)当i=0时,该结点为二叉树的根。 (2)若i>0,则该结点的双亲的序号为(i-1)/2 (3)若2i+1<n,则该结点的左孩子的序号为2i+1,否则该结点 无左孩子。 (4)若2i+2<n,则该结点的右孩子的序号为2i+2,否则该结点 0 无右孩子。 0 1 3 4 5 2 6 3
5.2 二叉树
5.2.2 二叉树的性质
性质5.4 任意一棵二叉树中,若叶结点的个数为n0,度为2 的结点的个数为n2,则必有n0=n2+1。 设二叉树的度为1的结点数为n1,树中结点总数为n,
则n=n0+n1+n2 ……①
(∵二叉树中只有度为0、1、2三种类型的结点) 设分支数为B,n个结点的二叉树,除了根结点外,每个结点 都有一个分支进入,则B=n-1 ;分支是由度为 1或者度为2的 射出的,又有B=2n2+n1; 则有:n-1=2n2+n1 n=2n2+n1+1……② 由① ②可得到: n0+n1+n2=2n2+n1+1 n0+n2=2n2 +1 即n2=n0-1。
5.2 二叉树
• 二叉树是非常重要的树形数
据结构。
• 很多从实际问题中抽象出来
的数据是二叉树形的;以后 我们将看到任意树或森林可 方便地转换成二叉树,从而 为一般树和森林的存储和处 理提供了有效方法。
5.1 5.2 5.3 5.5 5.7 课堂提要 第 5章 树 树的基本概念 二叉树 二叉树的遍历 树和森林 哈夫曼树和哈 夫曼编码
E
F D B
L
M N
J
结点G和C互为兄弟否?
5.1 树的基本概念
5.1.2 基本术语
后裔(decendent):一个结点的 所有子树上的任何结点都是该结 点的后裔。
结点C的后裔为:L、M、N。 祖先(ancestor):从根结点到 某个结点的路径上的所有结点 都是该结点的祖先。 结点L的祖先为:E、F、C。 M N A G C
5.2 二叉树
5.1.2 基本术语 二叉树应用实例
• 设有序表为(21,25,28,33,36,45),现在要在表
中查找元素33。 方法一:顺序搜索。效率低,平均比较一半的元素。 (21,25,28,33,36,45) 33 比较了4次! 方法二:改进结构,组织成树形结构。比较次数不会超 33 过树高,提高了效率。 28 21 25 33 36 45 比较了3次!
图5.6 几种特殊的二叉树
0 2 5 12 13 1 2
6
14
3
4 8 9
9
5
6
7
(b)完全二叉树
5.2 二叉树
5.2.2 二叉树的性质
定义5.6 扩充二叉树也称2-树,其中除叶子结点外,其 余结点都必须有两个孩子。
53
23 11 30
12
13
8 3
17
9 5
5.2 二叉树
5.2.2 二叉树的性质:完全二叉树的性质
5.1.1 树的定义
• 层次结构的数据在现实自然界中大量存在。


国家、省、市、县和区。
书的章节、回目。 上级和下级。 整体和部分。 祖先和后裔。
5.1 5.2 5.3 5.5 5.7 课堂提要 第 5章 树 树的基本概念 二叉树 二叉树的遍历 树和森林 哈夫曼树和哈 夫曼编码
5.1 树的基本概念
E
A G C L M N F D J B B D J
E F A C G L N M
有序树的各子树从左到右为第一棵子树、第二棵,…
5.1 树的基本概念
5.1.2 基本术语
森林:是树的集合。0个或多个不相交的树组成森林。 果园或有序森林:有序树的有序集合。
若将树中的根去掉,则得到根的子树组成的森林。 若增加一个结点,将森林中各树的根作为新增结点的 孩子,则森林即成为树。 E A G C L M N F D J B
1
4 5
2 6
7 8 9 10 11 12 13 14
(a)满二叉树
7 8 9 (b)完全二叉树
5.2 二叉树
5.2.3 二叉树ADT
ADT BinaryTree{ Data: 二叉树是结点的有限集合,该集合或者为空集,或者是由一个根 和两个互不相交的称为该根的左子树和右子树的二叉树组成。 Operations: Create(): 创建一棵空二叉树。 Destroy(): 撤销一棵二叉树。 IsEmpty():若二叉树空,则返回true,否则返回false。 Clear(): 移去所有结点,成为空二叉树。 Root(x):取x为根结点;若操作成功,则返回true,否则返回false MakeTree(x,left,right):创建一棵二叉树,x为根结点,left为 左子树,right为右子树。 BreakTree(x ,left, right):拆分二叉树为三部分,x为根的值, left和right分别为原树的左右子树 PreOrder: 使用函数Visit访问结点,先序遍历二叉树。 InOrder: 使用函数Visit访问结点,中序遍历二叉树。 PostOrder:使用函数Visit访问结点,后序遍历二叉树。 }
5.2 二叉树
5.2.2 二叉树的性质
性质5.2 高度为h的二叉树上至多有2h–1个结点。 当h=0时,二叉树为空二叉树。 当h>0时,利用性质1,高度为h的二叉树中结点的总数最多为:
性质1 二叉树的第 i (i 1)层上至多有2i 1个结点。
i 1 0 1 2 h 1 h 2 (2 2 2 ... 2 ) 2 1 i 1 h
相关文档
最新文档