二叉树 数组存储 还原

二叉树数组存储还原

二叉树是一种常见的树状数据结构,它由一组称为节点的元素组成,这些节点通过边连接在一起。二叉树的特点是每个节点最多有两个子节点:左子节点和右子节点。在实际应用中,二叉树的存储可以使用数组进行表示和还原。

数组存储二叉树的方法是通过将二叉树的节点按照层次遍历的顺序依次存储到数组中。具体来说,我们可以使用一个一维数组来表示二叉树,其中数组的下标表示二叉树节点的编号,数组中的元素表示二叉树的节点值。对于任意一个节点的下标为i,它的左子节点的下标为2i,右子节点的下标为2i + 1。这种方式的好处是可以通过一维数组的索引关系快速定位到对应的节点,方便进行各种操作。还原二叉树的过程就是将数组转换为二叉树的过程。我们可以从根节点开始,依次将数组中的元素赋值给二叉树的节点。具体操作如下:

我们需要创建一个空的二叉树。然后,从数组的第一个元素开始,将其赋值给二叉树的根节点。接着,我们可以按照层次遍历的顺序依次将数组中的元素赋值给二叉树的左子节点和右子节点。具体的赋值操作可以通过使用一个队列来实现。我们可以将根节点入队,然后从队列中取出一个节点,将其左子节点和右子节点入队,并分别将数组中的下一个元素赋值给左子节点和右子节点。重复这个过程,直到数组中的所有元素都被赋值给二叉树的节点为止。

通过上述的还原过程,我们可以将数组存储的二叉树还原为原来的二叉树结构。这种方法在一些具体的应用中非常实用,比如将二叉树进行序列化和反序列化、进行二叉树的遍历等。

总结一下,数组存储是一种常见且有效的表示二叉树的方法。通过将二叉树的节点按照层次遍历的顺序存储到数组中,可以方便地进行二叉树的还原操作。在实际应用中,我们可以根据具体的需求选择合适的数据结构和算法来实现二叉树的存储和操作。

南方学院2010-2011-1数据结构a

南京林业大学南方学院试卷 课程 数据结构(A 卷) 2010~2011学年第一学期 注意:请将正确答案写在答题纸上,答在试卷上不给分。 一.是非题:(判断下列各题是否正确,正确的在括号内打 “√”,错的打“×”。 每小题2分,共20分) 1. 数据的逻辑结构独立于计算机,物理结构依赖于计算机。 2. 算法和程序没有区别,所以在数据结构中两者是通用的。 3. 线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的 特性,因此是属于同一数据对象。 4. 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据 元素。 5. 在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表 是随机存取的存储结构。 6. 队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出 型结构。 7. 线性表可以看成是广义表的特例,若广义表中的每个元素都是原子,则广义 表便成为线性表。 8. 用一维数组存储二叉树时,总是以先序遍历存储结点。 9. 用邻接矩阵存储一个图所需的存储单元数目与图的边数有关。 10. 二叉排序树的查找和折半查找的时间性能相同。

二.选择题(本大题共10小题,每小题2分,共20分) 1.被计算机加工的数据元素不是孤立无关的,它们彼此之间一般存在着某种联系。通常将数据元素之间的这种联系称为______。 A. 规则 B. 集合 C. 结构 D. 运算 2.算法的时间复杂度取决于______。 A.问题的规模B.待处理数据的初态 C.A与B都对D.算法的易读性 3.对于顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。删除一个元素时所需移动元素次数的期望值为______。 A. n/2 B. (n+1)/2 C. (n-1)/2 D. n 4.循环队列用A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,那么当前队列中的元素个数是______。 A.(rear-front+m)%m B.rear-front+1 C.rear-front-1 D.rear-front 5.一个非空广义表的表头______。 A. 不可能是子表B.只能是子表 C.只能是原子D.可以是子表或原子 6.深度为6的二叉树至多有______个结点。 A.32 B.40 C.63 D.64 7.一个具有n个顶点的无向图最多有______条边。 A.n B.n(n-1) C.n(n-1)/2 D.2n 8.下面哪一个方法可以判断出一个有向图中是否有环(回路)______。 A.广度优先遍历B.拓扑排序 C.求最短路径D.求关键路径 9.关键路径是AOV网中______。 A.从源点到汇点的最短路径B.从源点到汇点的最长路径 C.最长的回路D.最短的回路 10.以下关键字序列中,是堆的是______。 A.46 55 13 42 94 17 05 70 B.46 55 62 42 94 17 05 70 C.13 55 46 42 94 17 05 70 D.05 42 13 55 94 17 46 70 三.填空题(20分):

数据结构和数据库

1、绪论 (1)数据:数据 (Data) 是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被程序处理的符号的总称。数据是计算机程序加工的“ 原料” 。例如,一个利用数值分析方法解代数方程的程序,其处理的数据是整数和实数;一个编译程序或文字处理器 ( 比如 Word) 处理的数据是字符串。因此,对计算机科学而言,数据的含义极为广泛,如图象、声音等都可以通过编码而归之于数据的范畴。 (2)数据元素:相对独立的数据单位。对于一个文件来说,每个记录就是它的数据元素;对于一个字符串来说,每个字符就是它的数据元素;对于一个数组来说,每一个数值就是它的数据元素。 数据对象 (Data Object) :数据对象 (Data Object) 是性质相同的数据元素的集合,是数据的一个子集。例如,整数数据对象的集合可表示为N ={0 ,±1 ,±2…….} ,字母字符数据对象的集合可表示为C={‘A','B',…'Z'} 。 (3)数据结构 (Data Structure) :是指数据元素之间存在着的一种或多种特定的关系。我们根据数据元素之间关系的不同特性,将数据结构划分为四种类型: ●集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其它关系; ●线性结构:结构中的数据元素之间存在一对一的关系,即相邻数据元素之间具有“前驱”和“后继”的关系; ●树形结构:结构中数据元素之间存在一对多的关系; ●图状结构或网状结构:结构中数据元素间存在多对多的关系。由于“集合”是数据元素之间关系极为松散的一种 结构,因此也可以用其它结构来表示它。 (4)存储结构 (Storge Structure) : 数据结构在计算机中的表示 ( 或称映象 ) 称为数据的存储结构,又称为物理结构。 顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。 二、线性表和广义表 1、线性表:线性表是具有相同属性的数据元素组成的一个有限序列。 线形表的存储结构:有顺序存储结构和链接存储结构两种。 (1)顺序存储结构:采用数组来来存储线性表,为保持线性表的线性关系,在数组中元素连续、顺序地存放。 用 C++ 类表示的线性表顺序存储结构: struct List { ElemType * data; //存放元素的数组 int size; //顺序表当前已存表项的最后位置(线性表的长度) }; (2)线性表的链接存储:

《数据结构(C语言-耿国华版)》复习大纲

第一章绪论 1.数据:人们利用文字符号、数字符号及其他规定的符号对现实世界的事物及其活动的描述。凡是能被计算机输入、存储、处理和输出的一切信息都叫数据。 2.数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据元素的组成:一个数据元素通常由一个或若干数据项组成。 数据项:指具有独立含义的最小标识单位。 3.数据对象:性质相同的数据元素的集合,是数据的一个子集。 4.数据结构:研究的是数据的逻辑结构和物理结构,以及它们之间的相互关系和所定义的算法在计算机上运行的学科。 5.算法:是对待定问题求解步骤的一种描述,是指令的有限序列。算法应满足以下性质: 1)输入性:具有零个或若干个输入量; 2)输出性:至少产生一个输出; 3)有穷性:每条指令的执行次数是有限的; 4)确定性:每条指令的含义明确,无二义性; 5)可行性:每条指令都应在有限的时间内完成。 6.评价算法优劣的主要指标: 1)执行算法后,计算机运行所消耗的时间,即所需的机器时间; 2)执行算法时,计算机所占存储量的大小,即所需的存储空间; 3)所设计的算法是否易读、易懂,是否容易转换成其他可运行的程序语言。 7.会估算某一算法的总执行时间和时间复杂度。 8.熟悉习题P32:3(5)-(9)、4(2)(3) 第二章线性表 1.线性表(P7):是性质相同的一组数据元素序列。 线性表的特性: 1)数据元素在线性表中是连续的,表中数据元素的个数可以增加或减少,但调整后数据元素仍必须是连续的,即线性表是一种线性结构。 2)数据元素在线性表中的位置仅取决于自己在表中的序号,并由该元素数据项中的关键字(key)加以标识。 3)线性表中所有数据元素的同一数据项,其属性是相同的,数据类型也是一致的。 线性表的主要运算有:插入、删除、查找、存取、长度、排序、复制、合并。 线性表的顺序存储结构及特点(就是把表中相邻的数据元素存放在内存邻接的存储单元,这种存储方法叫做顺序分配,又称顺序映像。其特点:逻辑上相邻的数据元素, 它们的物理次序也是相邻的。),存储地址的计算方式(Loc(a i )=Loc(a )+i*s)。 2.线性表的查找、插入和删除 熟悉线性表的查找算法(P38)、插入算法(P39)和删除算法(P40)。 3.理解线性表的顺序存储结构的优缺点。 4.熟悉线性链表的存储结构(P43) 线性链表(由若干结点链接而成的一种存储结构。)、结点(由存放数据元素值的部分—数据域和存放另一元素存储地址的部分—指针域或链域两部分信息组成的存储结构。)、单链表(线性链表)的概念。 5.熟悉线性链表的建立(P45-47)、查找(P47-48)、插入(P49-50)和删除(P50-51)的算法; 6.明了什么是循环链表(链表中最后一个结点指针域回指向链表的第一个结点,使得整个链表通过链指针成为一个环形,这种形式的链表称为循环链表。)? 7.明了双向链表的结构(链表中的每个结点有两个指针域,一个是向前链接的左指针(Lnext或prior),另一个是向后链接的右指针(Rnext或next),同时还有一个数据域(Data)。);了解双向链表的插入和删除的算法。 8.理解链表的优缺点(P48)。 9.熟悉习题P68:1、2 第三章限定性线性表----栈和队列 1.栈和队列 明确什么是栈及其特点(只允许在一端进行插入和删除的线性表。允许插入和删除

数据结构复习题(计算机大专)

数据结构复习题1 一、选择题 1. 以下四类基本的逻辑结构反映了四类基本的数据组织形式,解释错误的是 ( ) A 、集合中任何两个结点之间都有逻辑关系但组织形式松散 B 、线性结构中结点按逻辑关系依次排列形成一条"锁链" C 、树形结构具有分支、层次特性,其形态有点像自然界中的树 D 、图状结构中的各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接 2. 若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( ) A 、顺序存储结构 B 、链式存储结构 C 、索引存储结构 D 、散列存储结构 3. 在长度为n 的顺序表的第i (1≤i ≤n+1)个位置上插入一个元素,元素的移动次数为( ) A 、n-i+1 B 、n-i C 、i D 、i-1 4. 对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( ) A 、顺序表 B 、用头指针表示的单循环链表 C 、用尾指针表示的单循环链表 D 、单链表 5. 一个栈的入栈序列是a,b,c,d,e ,则栈的不可能的输出序列是( ) A 、e d c b a B 、d e c b a C 、d c e a b D 、a b c d e 6. 已知图1如右所示,若从顶点A 出发按深度优先搜索进行遍历,则可能得到的顶点序列为( ) A 、 A ,B ,E ,C ,D ,F B 、 A ,C ,F ,E ,B ,D C 、 A ,E ,B ,C ,F ,D D 、 A , E ,D , F ,C ,B 7. n 个顶点的有向图中含有向边的数目最多为 ( ) A 、n-1 B 、n C 、n(n-1)/2 D 、n(n-1) 8. 若一个栈的输入顺序是1,2,…,n ,输出序列的第一个元素是n ,则第i (1≤i ≤n )个输出元素是( ) A 、n-i B 、n-i-1 C 、i+1 D 、n -i+1 9. 已给图2,( )是该图的正确的拓扑排序序列 A 、1,2,3,4,5 B 、1,3,2,4,5 C 、1,2,4,3,5 D 、1,2,3,5,4 10. 为查找某一特定单词在文本中出现的位置,可应用的串运算是( ) A 、插入 B 、删除 C 、串联接 D 、子串定位 二、填空题 A B C D E F 图1 1 2 3 4 5 图2

数据结构复习题

前言 数据的存储结构即物理结构包括、、索引、散列4种基本类型。抽象数据类型ADT是指____________________以及____________________。 算法必须满足的准则为________________________________。 逻辑结构在计算机中的表示称为结构。 在线性结构中,开始结点前驱结点,其余每个结点有且只有一个前驱结点;终端结点后继结点,其余每个结点有且只有一个后继结点。 算法的5个重要特性是有穷性、、、输入和输出 数据结构被形式的定义为(D、R),其中D是()的有穷集,R是D上的()有穷集。 A.算法 B.数据元素 C.数据操作 D.关系 算法分析的目的是() A.找出数据结构的合理性 B.研究算法中的输入\输出关系 C.分析算法的效率以求改进 D.分析算法的易读性 下列时间复杂度中最坏的是() A.O(1) B.O(n) C.O(log2n) D.O(n2) 每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是()A.顺序B.链式C.索引D.散列 什么是数据结构?数据结构涉及哪几个方面? 常用的存储表示方法有哪几种并给出其定义? 算法有哪些基本特征。 算法的时间复杂度是指什么与什么相关?如何计算算法在平均情况下的时间复杂度? 简述下列概念:数据结构、逻辑结构、存储结构、线性结构、非线性结构。 顺序表 线形表元素长度为4,Loc (a1)=1000,则Loc (a3)= 。 同一栈内各元素的类型。 同一数组中个元素所占空间。 循环队列sq是空队列的条件是。 线性表的节点没有前驱节点。 向一个长度为n的顺序表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动______________个元素。 在有n个元素的顺序存储结构的线形表中插入一个新元素,需要平均移动个元素。仅允许在表的同一端进行插入和删除运算的线形表被称为。 栈的元素只能从栈的入栈、出栈。 一个队列的入队序列是1、2、3、4、,则队列的输出序列是。 栈S在进行出栈操作是首先要判断_____________________。 已知循环队列Sq,在进行出队操作前首先要判断。 在线性结构中,开始结点_______前驱结点,其余每个结点有且只有一个前驱结点;终端结点_______后继结点,其余每个结点有且只有一个后继结点。

《算法导论》读书笔记之第10章 基本数据结构之二叉树

《算法导论》读书笔记之第10章基本数据结构之二叉树 摘要 书中第10章10.4小节介绍了有根树,简单介绍了二叉树和分支数目无限制的有根树的存储结构,而没有关于二叉树的遍历过程。为此对二叉树做个简单的总结,介绍一下二叉树基本概念、性质、二叉树的存储结构和遍历过程,主要包括先根遍历、中根遍历、后根遍历和层次遍历。 1、二叉树的定义 二叉树(Binary Tree)是一种特殊的树型结构,每个节点至多有两棵子树,且二叉树的子树有左右之分,次序不能颠倒。 由定义可知,二叉树中不存在度(结点拥有的子树数目)大于2的节点。二叉树形状如下下图所示: 2、二叉树的性质 (1)在二叉树中的第i层上至多有2^(i-1)个结点(i>=1)。备注:^表示此方 (2)深度为k的二叉树至多有2^k-1个节点(k>=1)。(3)对任何一棵二叉树T,如果其终端结点数目为n0,度为2的节点数目为n2,则n0=n2+1。 满二叉树:深度为k且具有2^k-1个结点的二叉树。即满二叉树中的每一层上的结点数都是最大的结点数。

完全二叉树:深度为k具有n个结点的二叉树,当且仅当每一个结点与深度为k的满二叉树中的编号从1至n的结点一一对应。 可以得到一般结论:满二叉树和完全二叉树是两种特殊形态的二叉树,满二叉树肯定是完全二叉树,但完全二叉树不不一定是满二叉树。 举例如下图是所示: (4)具有n个节点的完全二叉树的深度为log2n + 1。 3、二叉树的存储结构 可以采用顺序存储数组和链式存储二叉链表两种方法 来存储二叉树。经常使用的二叉链表方法,因为其非常灵活,方便二叉树的操作。二叉树的二叉链表存储结构如下所示: 1 typedef struct binary_tree_node 2 { 3 int elem; 4 struct binary_tree_node *left; 5 struct binary_tree_node *right; 6 }binary_tree_node,*binary_tree; 举例说明二叉链表存储过程,如下图所示:

数据结构试题A答案

陕西科技大学试题纸(A参考答案及评分标准) 课程数据结构班级信息、数学05 学号姓名 请在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在括号内。1.设一个栈的输入序列为1,2,3,4,则借助一个栈所得的输出序列不可能是(D)。 A.1,2,3,4 B.4,3,2,1 C.1,3,4,2 D.4,1,2,3 2. 设有80行的二维数组A[80][60],其元素长度为4字节,按行优先顺序存储, 基地址为300,则元素A[18][25]的存储地址为(D)。 A.3800 B.4376 C.3900 D.4720 3. 将一棵有100个节点的完全二叉树从根这一层开始,每一层上从左到右依次 对结点进行编号,根节点的编号为0,则编号为49的结点的左孩子编号为(B)。 A.98 B.99 C.50 D.49 4. 在长度为n的顺序存储的线性表中,删除第i个元素(1≤i ≤n)时,需要从 前向后依次前移(A)个元素。 A.n-i B.n-i+1 C.n-i-1 D.i 5. 栈的插入和删除操作在(A)进行。 A.栈顶B.栈底C.任意位置D.指定位置 6. 链表适用于(A)查找。 A.顺序B.二分法C.二分法、顺序D.随机 7. 深度为6(根结点的层次为1)的二叉树至多有(D)个结点。 A.64 B.32 C.31 D.63 8. 用邻接表表示图进行广度优先遍历时,通常是采用(B)来实现算法的。 A.栈B.队列C.树D.图 9. 设有两个串p和q,求q在p中首次出现的位置的运算称作(B)。 A.连接B.模式匹配C.求子串D.求串长 10.若某线性表中最常用的操作是取第i个数据元素,则采用(D)存储方式最节 省时间。 A.单链表B.双链表C.单向循环D.顺序表 11.三个结点可构成(D)个不同形态的二叉树。 A.2 B.3 C.4 D.5 12.下列关键字序列中,(D)是堆。 A.16,72,31,23,94,53 B.94,23,31,72,16,53 C.16,53,23,94,31,72 D.16,23,53,31,94,72

数据结构树和二叉树习题及答案

习题六树和二叉树 一、单项选择题 1.以下说法错误的是 ( ) A.树形结构的特点是一个结点可以有多个直接前趋 B.线性结构中的一个结点至多只有一个直接后继 C.树形结构可以表达(组织)更复杂的数据 D.树(及一切树形结构)是一种"分支层次"结构 E.任何只含一个结点的集合是一棵树 2.下列说法中正确的是 ( ) A.任何一棵二叉树中至少有一个结点的度为2 B.任何一棵二叉树中每个结点的度都为2 C.任何一棵二叉树中的度肯定等于2 D.任何一棵二叉树中的度可以小于2 3.讨论树、森林和二叉树的关系,目的是为了() A.借助二叉树上的运算方法去实现对树的一些运算 B.将树、森林按二叉树的存储方式进行存储 C.将树、森林转换成二叉树 D.体现一种技巧,没有什么实际意义 4.树最适合用来表示 ( ) A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C.15 D.不确定 6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B.M1+M2 C.M3 D.M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A. 250 B. 500 C.254 D.505 E.以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为( ) A.不确定 B.2n C.2n+1 D.2n-1 9.二叉树的第I层上最多含有结点数为() A.2I B. 2I-1-1 C. 2I-1 D.2I -1 10.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点A.2h B.2h-1 C.2h+1 D.h+1 11. 利用二叉链表存储树,则根结点的右指针是()。 A.指向最左孩子 B.指向最右孩子 C.空 D.非空 12.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。 A.CBEFDA B. FEDCBA C. CBEDFA D.不定 13.已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac , 它的前序遍历是()。 A.acbed B.decab C.deabc D.cedba 14.在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序()A.都不相同 B.完全相同 C.先序和中序相同,而与后序不同 D.中序和后序相同,而与先序不同 15.在完全二叉树中,若一个结点是叶结点,则它没()。 A.左子结点 B.右子结点 C.左子结点和右子结点 D.左子结点,右子结点和兄弟结点

程序设计基础期末复习题及参答案

程序设计基础期末复习题及参答案 一、单项选择题(每空2分,共30分) 1、在计算机发展史中,计算机硬件与高级程序设计语言的相互关系是______。 A 同时诞生 B 硬件先发展然后再推动语言的发展 C 先有高级程序设计语言的发展 D 两者相互独立,分别发展 2、现代电子计算机诞生的理论基础是______。 A 图灵机 B 图灵测试 C 冯·诺依曼机 D 邱奇论题 3、关于计算机程序的错误说法是______。 A 程序是按照工作步骤事先编排好的、具有特殊功能的指令序列 B 运行在硬件系统之上的软件应该采用高级语言编写 C 在现代的计算机系统中程序采用二进制形式存储 D 同一计算机系统可以完成不同的功能是因为执行了不同的程序 4、程序设计过程中的三要素是______。 A 算法、数据结构和程序设计方法学 B 数据、算法和数据结构 C 输入、操作处理和输出

D 数据、数据结构和处理 5、JAVA语言的类别是______。 A 面向过程的程序设计语言 B 面向问题的程序设计语言 C 面向对象的程序设计语言 D 面向硬件的程序设计语言 6、在C语言中,字符串常量的定界符是______。 A 空格 B 单引号 C 双引号 D 方括号 7、C语言中int变量能够表示的数值范围是______。 A -32767~32768 B -32768~32767 C 0~65535 D 0~65536 8、C语言中的循环控制语句中属于“直到型”循环的语句是______。 A goto B while C for D do-while 9、数据的存储结构分为两种,它们是______。

树和二叉树作业

树和二叉树作业(一) 一、基础知识题 1、已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,……,n m个度为m的结点,问树中有多少个叶子结点? 2、由四个结点a、b、c、d组成二叉树,共有多少种不同的结构? 3、已知一棵具有n个结点的完全二叉树被顺序地存储于一维数组A中,试编写一个算法,打印出编号为i的结点的双亲和所有孩子。 4、写出对二叉树进行中序遍历的非递归算法。 5、已知一组元素为(46,25,78,62,12,37,70,29),画出按元素排列顺序输入生成的一棵二叉排序树。 6、已知一棵二叉排序树如下图所示,若从中依次删除72、12、49、28结点,试分别画出每删除一个结点后得到的二叉排序树。 7、有七个带权结点a、b、c、d、e、f、g,分别带权3、7、8、2、5、8、4,试以它们为叶子结点构造一棵哈夫曼树(请按照左子树根结点的权小于等于右子树根结点的权的次序构造)。 8、在一份电文中,共用到了五种字符:a、b、c、d、e,它们的出现频率依次为4、7、5、2、9,试画出对应的编码哈夫曼树(请按照左子树根结点的权小于等于右子树根结点的要的次序构造),求出每个字符的哈夫曼编码。 二、编程题 1、二叉树的遍历问题 【问题描述】 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。 输入: 输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历;第二行一个字

符串,表示树的中序遍历。树的结点一律用小写字母表示。 输出: 输出文件为tree.out,仅一行,表示树的后序遍历序列。 【样例输入】 abdec dbeac 【样例输出】 debca 2、假定一棵树采用标准形式存储,试写出以广义表形式输出树的算法。 3、假定树采用标准形式存储,试写出求其深度的算法。 4、FBI树(fbi.pas) 【问题描述】 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下: 1)T的根结点为R,其类型与串S的类型相同; 2)若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子 串S1构造R的左子树T1,由右子串S2构造R的右子树T2。 3)现在给定一个长度为2N的“01”串,请用上述构造方法构造出一棵FBI树,并输 出它的后序遍历序列。 【输入文件】 输入文件fbi.in的第一行是一个整数N(0 <= N <= 10),第二行是一个长度为2N的“01”串。 【输出文件】 输出文件fbi.out包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。【样例输入】 3 10001011 【样例输出】 IBFBBBFIBFIIIFF 【数据规模】 对于40%的数据,N <= 2; 对于全部的数据,N <= 10。 6、输入二叉树的两个结点,输出它们的最近公共祖先及其最短路径。 7、试将一段英文中出现的单词按字典序打印出来,同时应注明每个单词在该段文章中出现

数据结构树和二叉树习题及答案

数据结构树和二叉树习 题及答案 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

习题六树和二叉树 一、单项选择题 1.以下说法错误的是 ( ) A.树形结构的特点是一个结点可以有多个直接前趋 B.线性结构中的一个结点至多只有一个直接后继 C.树形结构可以表达(组织)更复杂的数据 D.树(及一切树形结构)是一种"分支层次"结构 E.任何只含一个结点的集合是一棵树 2.下列说法中正确的是 ( ) A.任何一棵二叉树中至少有一个结点的度为2 B.任何一棵二叉树中每个结点的度都为2 C.任何一棵二叉树中的度肯定等于2 D.任何一棵二叉树中的度可以小于2 3.讨论树、森林和二叉树的关系,目的是为了() A.借助二叉树上的运算方法去实现对树的一些运算 B.将树、森林按二叉树的存储方式进行存储 C.将树、森林转换成二叉树 D.体现一种技巧,没有什么实际意义 4.树最适合用来表示 ( ) A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是() A.9 B.11 C.15 D.不确定

6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B.M1+M2 C.M3 D.M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A. 250 B. 500 C.254 D.505 E.以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为( ) A.不确定 B.2n C.2n+1 D.2n-1 9.二叉树的第I层上最多含有结点数为() A.2I B. 2I-1-1 C. 2I-1 D.2I -1 10.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点 A.2h B.2h-1 C.2h+1 D.h+1 11. 利用二叉链表存储树,则根结点的右指针是()。 A.指向最左孩子 B.指向最右孩子 C.空 D.非空12.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。 A.CBEFDA B. FEDCBA C. CBEDFA D.不定 13.已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac , 它的前序遍历是()。 A.acbed B.decab C.deabc D.cedba 14.在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序 ()

数据结构试题及答案(十套)

数据结构试题及答案(十套)数据结构试题及答案(十套) 一、选择题 1. 数据结构是指()。 A. 存储数据的方式 B. 数据的逻辑结构和物理结构 C. 数据的存储结构和存储方式 D. 数据的逻辑结构、存储结构和存储方式 答案:D 2. 在数据结构中,线性表的存储方式包括()。 A. 顺序存储和链式存储 B. 数组存储和链表存储 C. 顺序存储、链表存储和索引存储 D. 顺序存储、链表存储和树形存储 答案:A 3. 栈是一种()的数据结构。 A. 先进先出

B. 先进后出 C. 后进先出 D. 后进后出 答案:C 4. 队列是一种()的数据结构。 A. 先进先出 B. 先进后出 C. 后进先出 D. 后进后出 答案:A 5. 二叉树中,度为0的节点称为()。 A. 叶子节点 B. 根节点 C. 中间节点 D. 子节点 答案:A 6. 以下哪个排序算法是稳定的?

A. 快速排序 B. 选择排序 C. 插入排序 D. 希尔排序 答案:C 7. 图中表示顶点之间关系的边的数量称为()。 A. 顶点度数 B. 边数 C. 路径数 D. 网络 答案:B 8. 哈希表通过()来实现高效的查找操作。 A. 散列函数 B. 排序算法 C. 遍历操作 D. 顺序存储 答案:A

9. 平衡二叉树是一种具有左右子树高度差不超过()的二叉树。 A. 0 B. 1 C. 2 D. 3 答案:B 10. 在链表中,删除节点的操作时间复杂度是()。 A. O(1) B. O(logn) C. O(n) D. O(nlogn) 答案:A 二、填空题 1. 在顺序存储结构中,元素之间的逻辑关系由()表示。 答案:下标 2. 二叉查找树的中序遍历结果是一个()序列。 答案:递增 3. 哈希表通过散列函数将关键字映射到()上。

广州大学松田学院7数据结构复习题-树-参考答案

7数据结构复习题(二叉树) 一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳) (√)(1)树结构中每个结点最多只有一个直接前驱。 (ㄨ)(2)完全二叉树一定是满二查树。 (ㄨ)(3)在中序线索二叉树中,右线索若不为空,则一定指向其双亲。 (√)(4)一棵二叉树中序遍历序列的最后一个结点,必定是该二叉树前序遍历的最后一个结点。(√)(5)二叉树的前序遍历中,任意一个结点均处于其子女结点的前面。 (√)(6)由二叉树的前序遍历序列和中序遍历序列,可以推导出后序遍历的序列。 (√)(7)在完全二叉树中,若一个结点没有左孩子,则它必然是叶子结点。 (ㄨ)(8)在哈夫曼编码中,当两个字符出现的频率相同,其编码也相同,对于这种情况应该做特殊处理。 (ㄨ)(9)含多于两棵树的森林转换的二叉树,其根结点一定无右孩子。 (√)(10)具有n个叶子结点的哈夫曼树共有2n-1个结点。 二.填空题 (1)在树中,一个结点所拥有的子树数称为该结点的度。 (2)度为零的结点称为叶(或叶子,或终端)结点。 (3)树中结点的最大层次称为树的深度(或高度)。 (4)对于二叉树来说,第i层上至多有2i-1个结点。 (5)深度为h的二叉树至多有2h-1 个结点。 (6)由一棵二叉树的前序序列和中序序列可唯一确定这棵二叉树。 (7)有20个结点的完全二叉树,编号为10的结点的父结点的编号是 5 。 (8)哈夫曼树是带权路径长度最小的二叉树。 (9)由二叉树的后序和中序遍历序列,可以唯一确定一棵二叉树。 (10)某二叉树的中序遍历序列为: DEBAC,后序遍历序列为:EBCAD。则前序遍历序列为:DABEC 。 (11)设一棵二叉树结点的先序遍历序历为:ABDECFGH,中序遍历序历为:DEBAFCHG,则二叉树中叶结点是:E、F、H 。 (12)已知完全二叉树的第8层有8个结点,则其叶结点数是68 。 (13)由树转换成二叉树时,其根结点无右子树。 (14)采用二叉链表存储的n个结点的二叉树,一共有2n 个指针域。 (15)采用二叉链表存储的n个结点的二叉树,共有空指针n+1 个。 (16)前序为A,B,C且后序为C,B,A

2022年复旦大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年复旦大学计算机科学与技术专业《数据结构与算法》科目期末 试卷A(有答案) 一、选择题 1、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。 A.5 B.6 C.8 D.9 2、将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。 A.N B.2N-1 C.2N D.N-1 3、线性表的顺序存储结构是一种()。 A.随机存取的存储结构 B.顺序存取的存储结构 C.索引存取的存储结构 D.Hash存取的存储结构 4、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。 A.仅修改队头指针 B.仅修改队尾指针 C.队头、队尾指针都可能要修改 D.队头、队尾指针都要修改 5、在下列表述中,正确的是() A.含有一个或多个空格字符的串称为空格串 B.对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树 C.选择排序算法是不稳定的 D.平衡二叉树的左右子树的结点数之差的绝对值不超过l 6、下列关于无向连通图特性的叙述中,正确的是()。 Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1 A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ

7、已知关键字序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后的小根堆是()。 A.3,5,12,8,28,20,15,22,19 B.3,5,12,19,20,15,22,8,28 C.3,8,12,5,20,15,22,28,19 D.3,12,5,8,28,20,15,22,19 8、在下述结论中,正确的有()。 ①只有一个结点的二叉树的度为0。 ②二叉树的度为2。 ③二叉树的左右子树可任意交换。④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A.①②③ B.⑦③④ C.②④ D.①④ 9、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()。 A.二叉排序树 B.哈夫曼树 C.AVL树 D.堆 10、对{05,46,13,55,94,17,42}进行基数排序,一趟排序的结果是: A.05,46,13,55,94,17,42 B.05,13,17,42,46,55.94 C.42,13,94,05,55,46,17 D.05,13,46,55,17,42,94 二、填空题 11、下面程序的功能是用递归算法将一个整数按逆序存放到一个字符数组中。如123存放成321。请填空:

华为海思od工作日常

华为海思od工作日常 楼主20届毕业,本科硕士都是划划水,没学什么东西,毕业后去了某安防大厂,之后在某些机缘巧合下去了华为OD。 首先谈下OD吧,很多同学对外包都很抵触,包括我本人也是这样的,当初面试也是抱着练练手的心态,拿到offer以后,虽然工资涨了很多,但由于算是外包,所以还是比较犹豫。最后是从很多华为的同学那里打听了OD相关的信息,确认了有明确的转正途径之后,才决定去OD的。并且去了华为以后,发现确实跟正式员工没有什么区别,除了工号不一样,其他待遇都是一致的,并且工作内容也是跟正式员工一致的,不会让你去做一些边角料的活。而且大佬真的特别多,很多OD都是清北复交浙的,确实比较猛。 再谈下笔试和面试吧,笔试是三道机考题,难度适中吧,有刷过LeetCode的话一般是没问题的。笔试总分400,能对一道半就算通过了,我考的时候第一题是一道字符串处理,给定一个字符串,按ascii 码进行排序,输出第k个ascii码最小的字母,中规中矩的题。第二题是给定一个数组存储的二叉树,然后输出从根节点到最小叶子节点的路径,题目也不是很难,考的都是基础的数据结构,相信小伙伴们也都能通过。 面试的话总共是4轮,两轮技术面+hr面+主管面,技术面的话就是现场撕题,题目会比笔试难一点,但并不需要跑用例,所以能提供思路并且能实现功能就行了。hr面+主管面试就比较常规了,主要

是问一些个人的发展方向等等,楼主之前面的是南研,表示想去杭州后,Hr还十分贴心的帮安排到了杭研,感人肺腑。 最后谈谈在华为工作的感受吧,首先是能学到的东西特别多,代码设计、优化、重构,日常的工作都会涉及到,不像某些互联网公司,就是天天crud(包括我老东家),跟在厂里拧螺丝没啥区别,学不到什么东西。并且周边的大佬特别多,有什么不懂的都可以问,比google 都好使。并且OD是华为研发社招的唯一渠道了(专家级除外),所以有兴趣的小伙伴们千万不要错过了。

《数据结构与算法》第5章 树和二叉树复习测试

第5章树和二叉树复习测试 一、填空题。 1.深度为k的二叉树共有2k-1个结点,该二叉树为(满)二叉树。 2.二叉树在二叉链表方式下,p指向二叉树的一个结点,p结点无右孩子的条件是(p->rtag==1)。 3.每个二叉链表必须有一个指向(头)结点的指针,该指针具有标识二叉链表的作用。4.有m个叶结点的哈夫曼树上结点的数目是(2m-1 )。 5.哈夫曼树是带权路径长度(最短)的树,通常权值较大的结点离根(越近)。6.有n个叶子结点的哈夫曼树中,其分支结点的总数为(n-1 )个。 7.若深度为6的完全二叉树的的第6层有3个叶子,则该二叉树一共有(34 )个结点。8.深度为k的完全二叉树至少有(2K-1)个结点,至多有(2K-1 )个结点。 二、选择题。 1.如果结点A是结点B的双亲,而且结点B有4个兄弟,则结点A的度是( D )。 A)3 B)3 C)4 D)5 2.树中所有结点的度之和等于所有结点总个数加( A )。 A)-1 B)0 C)1 D)2 3.具有3个结点的二叉树有( C )种形态。 A)3 B)4 C)5 D)7 4.以二叉链表作为二叉树的存储结构,在具有n个结点的二叉链表中(n>0),空链域的个数为( C )。 A)2n-1 B)n-1 C)n+1 D)2n+1 5.在一棵非空的二叉树的中序遍历序列中,其根结点的右边( A )。 A)只有右子树上的所有结点B)只有左子树上的所有结点 C)只有右子树上的部分结点D)只有左子树上的部分结点 6.若X是中序线索二叉树中一个有左孩子的结点,且X不为根,则X的前驱为( B )。 A)X的双亲B)X的左子树中最右结点 C)X的右子树中最左的结点D)X的左子树中最右叶结点 7.若二叉树的前序和后序序列正好相反,则该二叉树一定是( B )的二叉树。 A)空或者只有一个结点 B)任一结点若有子树则只有左子树或只有右子树 C)任一结点无左孩子 D)任一结点无右孩子 8.设森林F中有3棵树,第一、第二、第三棵树的结点个数分别为M1、M2、M3,则与森林F对应的二叉树的右子树的结点个数是(B )。 A)M1+M2 B)M2+M3 C)M1+M3 D)M1+M2+M3 9.线索二叉树是一种( C )结构。

西北工业大学2021年9月《数据结构》作业考核试题及答案参考13

西北工业大学2021年9月《数据结构》作业考核试题及答案参考 1. 以下( )不是队列的基本运算。 A.从队尾插入一个新元素 B.从队列中删除第i个元素 C.判断一个队列是否为空 D.读取队头元素的值 参考答案:B 2. 线性表(a1,a2,...,an)以链式方式存储,访问第i位置元素的时间复杂度为( )。 A.O(0) B.O(1) C.O(n) D.O(n2) 参考答案:C 3. 非空的双向循环链表中任何结点的前驱指针均不为空。( ) A.正确 B.错误 参考答案:A 4. B+树应用在( )文件系统中。 A.顺序 B.散列 C.VSAM D.ISAM 参考答案:C 5. 任何一个无向连通图的最小生成树( )。 A.只有一棵 B.有一棵或多棵 C.一定有多棵 D.可能不存在

参考答案:B 6. 二叉树是度为2的有序树。( ) A、错误 B、正确 参考答案:A 7. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 ( )。 A.单链表 B.静态链表 C.线性链表 D.顺序存储结构 参考答案:C 8. 在长度为n的顺表表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为( )。 A.n-i+1 B.n-i C.i D.i-1 参考答案:C 9. 连通网的最小生成树是其所有生成树中( )。 A.顶点集最小的生成树 B.边集最小的生成树 C.顶点权值之和最小的生成树 D.边的权值之和最小的生成树 参考答案:D 10. 一个具有767个结点的完全二叉树,其叶子结点个数为( )。 A.383

B.384 C.385 D.386 参考答案:B 11. 一个关键字序列为{46,79,56,38,40,84},采用快速排序以位于最左位置的元素为基准而得到的第一次划分结果为( ) A.{38,46,79,56,40,84} B.{38,79,56,46,40,84} C.{40,38,46,56,79,84} D.{38,46,56,79,40,84} 参考答案:C 12. 用一维数组存储二叉树时,总是以前序遍历顺序存储结点。( ) A.正确 B.错误 参考答案:B 13. 分块查找在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中的元素个数有关。( ) A.正确 B.错误 参考答案:A 14. 下面程序段的时间复杂度是( )。for(i=0; i<n; i++) for(j=1; j<m; j++) A[i][j]=0; A、O(n) B、O(m+n+1) C、O(m+n) D、O(m*n) 参考答案:D

[东北师范大学]《数据结构》20春在线作业2-1

【奥鹏】-[东北师范大学]数据结构20春在线作业2 试卷总分:100 得分:100 第1题,从一个栈顶指针top的链栈中删除一个结点时,用x保存被删除的元素,执行 ( )。 A、x = top; top = top-next; B、top = top-next; x = top-data; C、x = top-data; D、x = top-data; top = top-next; 正确答案:D 第2题,在下述几种排序方法中,不稳定的排序方法是 ()。 A、直接插入排序 B、冒泡排序 C、直接选择排序 D、归并排序 正确答案:C 第3题,在队列中存取数据的原则是 ( )。 A、先进先出 B、后进先出 C、先进后出 D、随意进出 正确答案:A 第4题,“堆积”问题是由于()引起的。 A、同义词之间发生冲突 B、散列函数 C、不同的同义词子表结合在一起 D、散列表“溢出” 正确答案:C 第5题,将一个A [1..100, 1..100] 的三对角矩阵,按行优先次序存入一维数组B[1..298] 中,A中元素A [66, 65] 在数组B中的位置K为 () 。 A、193 B、195 C、197 D、199 正确答案:B 第6题,head指向的带表头结点的单链表为空的判定条件是 ( )。

A、head = = NULL B、head-next = = head C、head ! = NULL D、head-next = = NULL 正确答案:D 第7题,有n个顶点的有向图的边数最多为 ()。 A、n B、n(n-1) C、n(n-1)/2 D、2n 正确答案:B 第8题,对于3个结点a、b、c,可构成不同的二叉树的棵数为 ( )。 A、24 B、28 C、30 D、32 正确答案:C 第9题,设F是一个森林, B是由F变换得到的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有 ( ) 个。 A、n-1 B、n C、n +1 D、n+2 正确答案:C 第10题,若设根结点的层数为0,则高(或深)度为4的二叉树至多含有的结点数为 ( )。 A、10 B、16 C、31 D、32 正确答案:C 第11题,顺序存储结构的优点是( )。 A、存储密度大 B、插入运算方便 C、删除运算方便

相关主题
相关文档
最新文档