已知某二叉树的先序遍历和中序遍历的结果是先序遍历ABDEGCF

合集下载

(完整版)数据结构复习题目及答案

(完整版)数据结构复习题目及答案

《数据结构-C语言版》第一章绪论单项选择题1.在数据结构中,数据的基本单位是_____ ____。

A. 数据项B. 数据类型C. 数据元素D. 数据变量2.数据结构中数据元素之间的逻辑关系被称为__ ____。

A. 数据的存储结构B. 数据的基本操作C. 程序的算法D. 数据的逻辑结构3.在数据结构中,与所使用计算机无关的是数据的____ ___。

A. 存储结构B. 逻辑和物理结构C. 逻辑结构D. 物理结构4.在链式存储结构中,数据之间的关系是通过____ ____体现的。

A. 数据在内存的相对位置B. 指示数据元素的指针C. 数据的存储地址D. 指针5.计算算法的时间复杂度是属于一种____ ___。

A. 事前统计的方法B. 事前分析估算的方法C. 事后统计的方法D. 事后分析估算的方法6.在对算法的时间复杂度进行估计的时候,下列最佳的时间复杂度是____ __。

A. n2B. nlognC. nD. logn7.设使用某算法对n个元素进行处理,所需的时间是T(n)=100nlog2n+200n+2000,则该算法的渐近时间复杂度为____ ___。

A. O(1)B. O(n)C. O(200n)D. O(nlog2n)CDCBBDD第二章线性表单项选择题1.链表不具有的特点是____ ____。

A. 可随机访问任一元素B. 插入和删除时不需要移动元素C. 不必事先估计存储空间D. 所需空间与线性表的长度正比2.设顺序表的每个元素占8个存储单元。

第1个单元的存储地址是100,则第6个元素占用的最后一个存储单元的地址为。

A. 139B. 140C. 147D. 1483.在线性链表存储结构下,插入操作算法。

A. 需要判断是否表满B. 需要判断是否表空C. 不需要判断表满D. 需要判断是否表空和表满4.在一个单链表中,若删除p所指结点的后继结点,则执行。

A. p->next = p->next->next;B. p->next = p->next;C. p = p->next->next;D. p = p->next; p->next = p->next->next;5.将长度为n的单链表接在长度为m的单链表之后的算法时间复杂度为。

数据结构试题及答案()

数据结构试题及答案()

1. 1.数据结构是指数据及其相互之间的______________。

当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。

2. 2.队列的插入操作是在队列的___尾______进行,删除操作是在队列的____首______进行。

3. 3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。

4. 4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为_________,在表尾插入元素的时间复杂度为____________。

5. 5.设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用_______个字节。

W中第6 行的元素和第4 列的元素共占用_________个字节。

若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为__________。

6. 6.广义表A= (a,(a,b),((a,b),c)),则它的深度为____________,它的长度为____________。

7.7.二叉树是指度为2的____________________树。

一棵结点数为N的二叉树,其所有结点的度的总和是_____________。

8.8.对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个______________。

对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的__________________。

9.9.对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为_____________个,其中_______________个用于指向孩子,_________________个指针是空闲的。

10.10.若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即编号为0的结点存储到A[0]中。

c语言版数据结构试题及答案

c语言版数据结构试题及答案

习题一一、单选题1.在一个带有附加表头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( B )。

A. HL=p; p->next=HL;B. p->next=HL->next; HL->next=p;C. p->next=HL; p=HL;D. p->next=HL; HL=p;2.若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储( B )个元素.A. nB.n-1C. n+1D.不确定3.下述哪一条是顺序存储方式的优点?(A )A.存储密度大 B.插入和删除运算方便C. 获取符合某种条件的元素方便D.查找运算速度快4.设有一个二维数组A[m][n],假设A[0][0]存放位置在600(10),A[3][3]存放位置在678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置?(脚注(10)表示用10进制表示,m>3)DA.658 B.648 C.633 D.6535.下列关于二叉树遍历的叙述中,正确的是( AD ) 。

A. 若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点B.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点 C.若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点D.若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点6.k层二叉树的结点总数最多为( A ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.对线性表进行二分法查找,其前提条件是( B ).A.线性表以链接方式存储,并且按关键码值排好序B.线性表以顺序方式存储,并且按关键码值的检索频率排好序C.线性表以顺序方式存储,并且按关键码值排好序D.线性表以链接方式存储,并且按关键码值的检索频率排好序8.对n个记录进行堆排序,所需要的辅助存储空为Cn) B. O(n) C. O(1) D. O(n2)A. O(1og29.对于线性表(7,34,77,25,64,49,20,14)进行散列存储时,若选用H(K)=K %7作为散列函数,则散列地址为0的元素有( D )个,A.1 B.2 C.3 D.410.下列关于数据结构的叙述中,正确的是( D ).A.数组是不同类型值的集合B.递归算法的程序结构比迭代算法的程序结构更为精炼C.树是一种线性结构D.用一维数组存储一棵完全二叉树是有效的存储方法二、填空题1.数据的逻辑结构被分为_集合结构、__线性结构、_树结构和_图结构四种。

《数据结构》课后题及答案

《数据结构》课后题及答案

第一章绪论一、选择题1、( )是数据的基本单位。

A) 数据结构B)数据元素C)数据项D)数据类型2、以下说法不正确的是( )。

A)数据结构就是数据之间的逻辑结构。

B)数据类型可看成是程序设计语言中已实现的数据结构。

C)数据项是组成数据元素的最小标识单位。

D)数据的抽象运算不依赖具体的存储结构。

3、计算机算法是解决问题的有限运算序列,它具备输入、输出和()等5个特性。

A)可执行性、可移植性和可扩充性B)可行性、确定性和有穷性C)确定性、有穷性和稳定性D)易读性、稳定性和安全性4、一般而言,最适合描述算法的语言是( )。

A)自然语言B)计算机程序语言C)介于自然语言和程序设计语言之间的伪语言D)数学公式5、通常所说的时间复杂度指( )。

A)语句的频度B)算法的时间消耗C)渐近时间复杂度D)最坏时间复杂度6、A算法的时间复杂度为O(n3),B算法的时间复杂度为O(2n),则说明( )。

A)对于任何数据量,A算法的时间开销都比B算法小B)随着问题规模n的增大,A算法比B算法有效C)随着问题规模n的增大,B算法比A算法有效D)对于任何数据量,B算法的时间开销都比A算法小7、算法分析的目的是()。

A)找出数据结构的合理性B)研究算法中的输入和输出的关系C)分析算法的效率以求改进D)分析算法的易懂性和文档性8、下面程序段的时间复杂度为()。

for( i=0; i<m; i++)for( j=0; j<n; j++)a[i][j]=i*j;A)O(m2) B) O(n2) C) O(m*n) D) O(m+n)9、下面算法的时间复杂度为( )。

int f ( int n ){ if ( n= =0 || n= =1 ) return 1; else return n*f (n-1); }A) O(1) B) O(n) C) O(n2) D) O(n!)二、填空题1、数据的( )结构依赖于计算机语言。

数据结构试题集[包含答案_完整版]

数据结构试题集[包含答案_完整版]

第一章概论一、选择题1、研究数据结构就是研究(D )。

A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。

A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。

A. 图B. 树C. 广义表D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。

A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。

for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;A. O(m2)B. O(n2)C. O(m*n)D. O(m+n)6、算法是(D )。

A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog 2n+n 2+8),其时间复杂度表示( C )。

A. O(n)B. O(nlog 2n)C. O(n 2)D. O(log 2n)8、下面程序段的时间复杂度为( C )。

i=1; while(i<=n)i=i*3;A. O(n)B. O(3n)C. O(log 3n)D. O(n 3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。

A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是(A )。

i=s=0;while(s<n){ i++;s+=i; 根号(n )}A. O(n)B. O(n 2)C. O(log 2n)D. O(n 3)11、抽象数据类型的三个组成部分分别为( A )。

东南大学十套数据结构试题及答案

东南大学十套数据结构试题及答案

东南大学十套数据结构试题及答案数据结构试卷(一)三、计算题(每题 6 分,共24分)1.在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试写出该线性表。

A 0 1 2 3 4 5 6 7datanext2.3.已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7};E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。

4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。

四、阅读算法(每题7分,共14分)1.LinkList mynote(LinkList L){//L是不带头结点的单链表的头指针if(L&&L->next){q=L;L=L->next;p=L;S1: while(p->next) p=p->next;S2: p->next=q;q->next=NULL;}return L;}请回答下列问题:(1)说明语句S1的功能;(2)说明语句组S2的功能;(3)设链表表示的线性表为(a1,a2, …,an),写出算法执行后的返回值所表示的线性表。

2.void ABC(BTNode * BT){if BT {ABC (BT->left);ABC (BT->right);cout<data<<' ';}}该算法的功能是:五、算法填空(共8分)二叉搜索树的查找——递归算法:bool Find(BTreeNode* BST,ElemType& item){if (BST==NULL)return false; //查找失败else {if (item==BST->data){item=BST->data;//查找成功return ___________;}else if(itemdata)return Find(______________,item);else return Find(_______________,item);}//if}六、编写算法(共8分)统计出单链表HL中结点的值等于给定值X的结点数。

数据结构与算法题库

数据结构与算法题库

数据结构与算法题库五、综合题1.已知一棵二叉树的先序遍历序列为ABECDFGHIJ,中序遍历序列为EBCDAFHIGJ。

(1) 画出这棵二叉树;(2) 写出该二叉树的后序遍历序列;(3) 画出这棵二叉树的中序线索二叉树的存储结构图。

2. 已知一棵二叉树的中根遍历序列为:2,4,1,5,3,7,6,8,后根遍历序列为:4,2,5,7,8,6,3,1。

(1)画出二叉树。

(2) 写出二叉树先根遍历序列。

(3) 画出该二叉树的先序线索二叉树。

3. 假设一颗二叉树的中序遍历序列为DCBGEAHFIJK和后序遍历序列为DCEGBFHKJIA.。

1)请画出该二叉树。

2)请画出该二叉树的后序序线索二叉树。

3)写出该二叉树的先序遍历序列。

4. 已知一棵二叉树的先序遍历序列为ABCDEFGHIJK,中序遍历序列为CDBGFEAHJIK。

(1)请构造二叉树;(2)画出先序线索二叉树。

(3)分别列出度为0、1和2的结点。

5.已知某通讯电文仅由a,b,c,d,e,f,g,h八个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。

为这8中字母设计哈夫曼编码。

6. 假设用于通信的电文仅由5种字母ABCDE组成,每个字母出现的概率分别为0.12, 0.40,0.15, 0.08, 0.25。

(1) 用5个概率值为权值设计Huffman(哈夫曼)树。

(2) 计算它的带权路径长度WPL。

(3) 设计这5种字符的Huffman编码7.按下面要求转换森林和二叉树。

(1)将图-1的二叉树转换成森林。

(2)将图-2的树转换成二叉树。

图-1图-28. 画出下列二叉树相应的森林,并写出中序遍历森林的序列。

9. 已知一个无向网如下图所示,试用普里姆算法计算出该图的最小生成树,最小生成树为权值之和最小的生成树。

10. 已知一个无向图G=(V,E),V={A,B,C,D,E,F,G,H},E = {(A,B),(A,C),(B,D),(B,E),(C,F),(C,G),(D,H),(E,H),(F,G)};(1)画出该无向图;(2)画出该图的邻接表存储结构;(3)根据存储结构,写出深度优先搜索遍历序列和广度优先搜索遍历序列。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。

.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。

.循环队列的引入,目的是为了克服假溢出。

.长度为0的字符串称为空串。

.组成串的数据元素只能是字符。

.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。

.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

|.广义表的深度是广义表中括号的重数.有向图G可拓扑排序的判别条件是有无回路。

.若要求一个稠密图的最小生成树,最好用Prim算法求解。

. 直接定址法法构造的哈希函数肯定不会发生冲突。

.排序算法所花费的时间,通常用在数据的比较和交换两大操作。

.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。

.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。

.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。

.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。

".一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。

.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。

.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

二叉树--已知前序遍历和中序遍历,输出后续遍历

二叉树--已知前序遍历和中序遍历,输出后续遍历

二叉树--已知前序遍历和中序遍历,输出后续遍历-- 二叉树已知前序遍历和中序遍历,输出后续遍历已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。

输入说明:仅一组数据,分为两行输入,第一行表示指定二叉树的先序序列,第二行表示该二叉树的中序序列,序列元素均为大写英文字符,表示二叉树的结点。

输出说明:在一行上输出该二叉树的后序序列。

输入样本:ABDGCEFHDGBAECHF输出样本:GDBEHFCA简单源码如下:[cpp] view plaincopy1. #include <stdio.h>2. #include <string.h>3. #define MAX 1014. char preoder[MAX];5. char inoder[MAX];6. void build(int preleft,int preright,int inleft,int inright)7. {8. int i,lsize,rsize;9. if(preleft <= preright && inleft <= inright)10. {11. for(i = inleft;i <= inright;i++)//在中序遍历中查找根结点12. {13. if(preoder[preleft] == inoder[i]) break;14. }15. lsize = i - inleft;16. rsize = inright - i;17.18. //递归创建左子树19. if(lsize > 0) build(preleft + 1,preleft + lsize, inleft,i - 1);20.21. //递归创建右子树22. if(rsize > 0) build(preleft + 1 + lsize,preright ,i + 1,inright);23.24. //输出根结点25. printf("%c",preoder[preleft]); 26. }27. }28. int main()29. {30. //freopen("input","r",stdin); 31.32. scanf("%s %s",preoder,inoder); 33.34. int psize,insize;35. psize = strlen(preoder); 36. insize = strlen(inoder); 37.38. build(0,psize - 1,0,insize - 1); 39.40. return 0;41. }。

国家二级(C++)笔试模拟试卷49(题后含答案及解析)

国家二级(C++)笔试模拟试卷49(题后含答案及解析)

国家二级(C++)笔试模拟试卷49(题后含答案及解析) 题型有:1. 选择题 2. 填空题选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。

1.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG正确答案:B解析:利用前序和中序遍历的方法可以确定二叉树的结构,具体步骤如下:①前序遍历的第一个结点A为树的根结点;②中序遍历中A的左边的结点为A 的左子树,A右边的结点为A的右子树;③再分别对A的左右子树进行上述两步处理,直到每个结点都找到正确的位置。

2.树是结点的集合,它的根结点数目是A.有且只有1B.1或多于1C.0或1D.至少2正确答案:A解析:树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。

每个集合同时又是一棵树。

树有且只有1个根结点。

3.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A.e3,e1,e4,e2B.e2,e4,e3,e1C.e3,e4,e1,e2D.任意顺序正确答案:B解析:由栈“后进先出”的特点可知:选项A)中e1不可能比e2先出,选项C)中e3不可能比e4先出,且e1不可能比e2先出,选项D)中栈是先进后出的,所以不可能是任意顺序。

选项B)中出栈过程如图所示:4.在设计程序时,应采纳的原则之一是A.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解正确答案:D解析:滥用goto语句将使程序流程无规律,可读性差,因此选项A)不选;注解行有利于对程序的理解,不应减少或取消,选项B)也不选;程序的长短要依照实际情况而论,而不是越短越好,选项C)也不选。

5.程序设计语言的基本成分是数据成分、运算成分、控制成分和A.对象成分B.变量成分C.语句成分D.传输成分正确答案:D解析:程序设计语言是用于书写计算机程序的语言,其基本成分有以下4种,数据成分:用来描述程序中的数据。

C++数据结构已知二叉树的前序遍历与中序遍历结果求后序遍历

C++数据结构已知二叉树的前序遍历与中序遍历结果求后序遍历

二叉树的遍历问题描述输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。

输入输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。

树的结点一律用小写字母表示。

输出输出文件为tree.out,仅一行,表示树的后序遍历序列。

样例输入abdecdbeac样例输出debca--------------------------------------------------------------------- --------------------------------------------------------------------- #include<string.h>using namespace std;struct tree{char data;tree *l,*r;};tree * create(char pre[],char in[]){tree *root;if(strlen(pre)==0) {root=NULL;}else{root=new tree;root->data=pre[0];char pre1[20];pre1[0]='\0';char pre2[20];pre2[0]='\0';char in1[20];in1[0]='\0';char in2[20];in2[0]='\0';int n=1;for(int i=0;i<strlen(in);i++){if(in[i]!=pre[0]&&n==1){in1[i]=in[i];in1[i+1]='\0';}if(in[i]==pre[0]) n=2;if(in[i]!=pre[0]&&n==2){in2[i-strlen(in1)-1]=in[i];in2[i-strlen(in1)+1]='\0';}}for(int i=1;i<strlen(pre);i++){if(i<strlen(in1)+1){pre1[i-1]=pre[i];pre1[i]='\0';}else {pre2[i-1-strlen(pre1)]=pre[i];pre2[i-strlen(pre1)]='\0';}}root->l=create(pre1,in1);root->r=create(pre2,in2);}return root;}void post(tree * root){if(root==NULL) return;else {post(root->l);post(root->r);cout<<root->data;}}int main(){char pre[100];char in[100];cin>>pre;cin>>in;tree * root=create(pre,in);post(root);return 0;}。

请分别写出下面二叉树的先序遍历,中序遍历和后序遍历的结果

请分别写出下面二叉树的先序遍历,中序遍历和后序遍历的结果

请分别写出下面二叉树的先序遍历,中序遍历和后序遍历的结果.二叉树的遍历主要有三种:(1)先(根)序遍历(根左右)(2)中(根)序遍历(左根右)(3)后(根)序遍历(左右根)举个例子:先(根)序遍历(根左右):A B D H E I C F J K G中(根)序遍历(左根右) : D H B E I A J F K C G后(根)序遍历(左右根) : H D I E B J K F G C A以后(根)序遍历为例,每次都是先遍历树的左子树,然后再遍历树的右子树,最后再遍历根节点,以此类推,直至遍历完整个树。

此外,还有一个命题:给定了二叉树的任何一种遍历序列,都无法唯一确定相应的二叉树。

但是如果知道了二叉树的中序遍历序列和任意的另一种遍历序列,就可以唯一地确定二叉树。

请分别写出下面二叉树的先序遍历,中序遍历和后序遍历的结果. 1(1)中序遍历:debac后序遍历:dabec后序遍历序列的最后一个结点是根结点,所以可知c为根结点。

中序遍历序列的根结点在中间,其左边是左子树,右边是右子树。

所以从中序遍历序列中可看出,根结点c只有左子树,没有右子树。

(2)中序遍历:deba后序遍历:dabe后序遍历序列的最后一个结点是根结点,所以可知e为c的左子树的根结点。

中序遍历序列的根结点在中间,其左边是左子树,右边是右子树。

所以从中序遍历序列中可看出,根结点e的左子结点是d,右子树是ba。

(3)中序遍历:ba后序遍历:ab由后序遍历序列可知b为e的右子树的根结点。

由中序遍历序列中可看出,a为根结点b的右子结点。

树的结构如下:class Node:def __init__(self, dat, left=None, right=None):self.data = datself.left = leftself.right = rightdef rebuild(rear, center):if not rear:returncur = Node(rear[-1])index = center.index(rear[-1])cur.left = rebuild(rear[:index], center[:index])cur.right = rebuild(rear[index:-1], center[index + 1:]) #rear[index:-1]是到倒数第二个数return curdef pre_order(t):if t == None:returnprint(t.data)pre_order(t.left)pre_order(t.right)if __name__ == "__main__":rear = ['d','a','b','e','c']center = ['d','e','b','a','c']t = rebuild(rear, center)pre_order(t)请分别写出下面二叉树的先序遍历,中序遍历和后序遍历的结果. 5(1)先序遍历:abdgcefh中序遍历:dgbaechf先序遍历序列的第一个结点是根结点,所以可知a为根结点。

(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和...

(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和...

一、选择题(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为A)GEDHFBCA B)DGEBHFCAC)ABCDEFGH D)ACBFEDHG【参考答案】B(2)树是结点的集合,它的根结点数目是A)有且只有1 B)1或多于1 C)0或1 D)至少2【参考答案】A(3)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D)任意顺序【参考答案】B(4)在设计程序时,应采纳的原则之一是A)不限制goto语句的使用 B)减少或取消注解行C)程序越短越好 D)程序结构应有助于读者理解【参考答案】D(5)程序设计语言的基本成分是数据成分、运算成分、控制成分和A)对象成分 B)变量成分 C)语句成分 D)传输成分【参考答案】D(6)下列叙述中,不属于软件需求规格说明书的作用的是A)便于用户、开发人员进行理解和交流B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)作为确认测试和验收的依据D)便于开发人员进行需求分析【参考答案】D(7)下列不属于软件工程的3个要素的是A)工具 B)过程 C)方法 D)环境【参考答案】D(8)单个用户使用的数据视图的描述称为A)外模式 B)概念模式 C)内模式 D)存储模式【参考答案】A(9)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性 B)关系 C)键 D)域【参考答案】B(10)SQL语言又称为A)结构化定义语言 B)结构化控制语言C)结构化查询语言 D)结构化操纵语言【参考答案】C(11)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用【参考答案】D(12)在C语言中,退格符是A)\n B)\t C)\f D)\b【参考答案】D(13)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义【参考答案】A(14)在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。

已知二叉树的先序遍历序列和中序遍历序列,求其后序遍历序列

已知二叉树的先序遍历序列和中序遍历序列,求其后序遍历序列

已知⼆叉树的先序遍历序列和中序遍历序列,求其后序遍历序列2018.1.19 Fri已知⼆叉树的先序遍历序列和中序遍历序列,求其后序遍历序列例:先序遍历:ABDGCEFH中序遍历:DGBAECHF解:⾸先要先知道各种遍历⽅式的规则:先序遍历(先根遍历、前序遍历):1. 访问根结点2. 遍历左⼦树3. 遍历右⼦树中序遍历(中根遍历):1. 遍历左⼦树2. 访问根结点3. 遍历右⼦树后序遍历(后根遍历):1. 遍历左⼦树2. 遍历右⼦树3. 访问根结点且⽆论哪种遍历,左右⼦树仍然遵循该遍历规则。

若没有左⼦结点或右⼦结点(即不是满⼆叉树,如图2)则输出⼀个空代替⼀下就好,然后继续遍历。

例如图⼆中后序遍历为:BOA,即BA。

因为先序遍历是先访问根节点,所以A⼀定是根节点。

因此可以进⾏如下拆分:先序遍历:A BDGCEFH中序遍历:DGB A ECHF⼜因为中序遍历的顺序是:左⼦树,根节点,右⼦树,所以再拆 先序遍历:A BDG CEFH中序遍历:DGB A ECHF然后同理看BDG树先序遍历:B DG中序遍历:DG B得到B是A的左⼦结点。

同理看DG树: 先序遍历:D G中序遍历:D G得到D是B的左⼦结点, G是D的右⼦结点。

(因为如果G是左⼦结点的话中序遍历是GD)。

得到了左⼦树。

右⼦树同理:先序遍历:C E FH 中序遍历:E C HF得到C是A的右⼦结点,E是C的左⼦结点。

先序遍历:F H 中序遍历:H F得到F是C的右⼦结点,H是F的左⼦结点。

得到右⼦树。

得到如图1的⼆叉树。

然后得到后序遍历:GDBEHFCA。

已知某二叉树的先序遍历和中序遍历的结果是先序遍历ABDEGCF

已知某二叉树的先序遍历和中序遍历的结果是先序遍历ABDEGCF

树与二叉树复习一、填空1、由二叉树的(中)序和(前、后)序遍历序列可以唯一确定一棵二叉树。

2、任意一棵二叉树,若度为0的结点个数为n0,度为2的结点个数为n2,则n0等于(n0=n2+1 )。

3、一棵二叉树的第i(i≥1)层最多有(2i-1 )个结点。

4、一棵有n个结点的二叉树,若它有n0个叶子结点,则该二叉树上度为1的结点个数n1=(n-2n0+1 )。

5、在一棵高度为5的完全二叉树中,最少含有( 16 )个结点。

6、 2.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当折半查找值为82的结点时,( C )次比较后查找成功。

A. 11 B 5 C 4 D 87、在有n个叶结点的哈夫曼树中,总结点数( 2n-1 )。

8、若一个问题的求解既可以用递归算法,也可以用递推算法,则往往用(递推)算法,因为(递推算法效率高)。

9、设一棵完全二叉树有700个结点,则共有( 350 )叶子结点。

10、设一棵完全二叉树具有1000个结点,该树有(500)个叶子结点,有(499 )个度为2的结点,有( 1 )个结点只有非空左子树。

二、判断1、( × )在哈夫曼树中,权值最小的结点离根结点最近。

2、( √ ) 完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。

3、( √ )二叉树的前序遍历序列中,任意一个结点均处在其孩子结点的前面。

4、( × ) 若一搜索树(查找树)是一个有n个结点的完全二叉树,则该树的最大值一定在叶结点上。

5、( √ )若以二叉链表作为树和二叉树的存储结构,则给定任一棵树都可以找到唯一的一棵二叉树与之对应。

6、( √ )若一搜索树(查找树)是一个有n个结点的完全二叉树,则该树的最小值一定在叶结点上。

三、选择1、树最适合用来表示( C )A 、有序数据元素B 、无序数据元素C 、元素之间具有分支层次关系的数据D 、元素之间无联系的数据2、在有n (n>0)个结点的二叉链表中,空链域的个数为( B )。

数据结构综合题

数据结构综合题

综合题1.设一组记录的关键字序列为(49,83,59,41,43,47),采用堆排序算法完成以下操作:(要求小根堆,并画出中间过程)(1)以二叉树描述6个元素的初始堆(2)以二叉树描述逐次取走堆顶元素后,经调整得到的5个元素、4个元素的堆 (1) (2)49598341 43478347414359494983414347834359494143478349594147595947414983 43434741598349474183594349474143 83 495959474143 83 492、设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一个数据域data 和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下要求写出相应语句(不要求完整程序,(1)、(2)、(3)、(4)是一个连续的过程)。

(1)新开辟一个结点,使指针s指向该结点,结点的数据成员data赋值为1(2)把该结点插入链表的尾部,释放指针s的指向(3)删除链表的第一个结点(4)已知p1指向另一个新结点,把它插入到p所指结点和尾结点之间(1)s=(NODE*)malloc(sizeof(NODE));s->data=1;(2)p->next=s;s->next= NULL;free(s)(3)head = head ->next;(4)p1->next= p->next;p->next=p1;3.设有序表为(13,19,25,36,48,51,63,84,91,116,135,200),元素的下标依次为1,2, (12)(1)说出有哪几个元素需要经过4次元素间的比较才能成功查到(2)画出对上述有序表进行折半查找所对应的判定树(树结点用下标表示)(3)设查找元素5,需要进行多少次元素间的比较才能确定不能查到(1)19,48,84,116,200(2)(3)3次4 7128521111063 92212130191502515 200100104.(1)设有序列{10,12,15,19,22,25,100,130,150,200}画出对上述序列进行折半查找的判定树(以序列中的元素作为树的结点)(2)为了成功查找到100需要进行多少次元素间的比较?为了查找9,经过多少次元素间的比较可知道查找失败? (1)(2)4次,3次5.(1)对给定数列{7,16,4,8,20,9,6,18,5},依次取数列中的数据,构造一棵二叉排序树。

山农大《数据结构复习题-高起本》期末考试复习题及参考答案

山农大《数据结构复习题-高起本》期末考试复习题及参考答案

《数据结构》复习题一、填空题1、数据的物理结构主要包括_____________和______________两种情况。

2、设一棵完全二叉树中有500个结点,则该二叉树的深度为__________;若用二叉链表作为该完全二叉树的存储结构,则共有___________个空指针域。

3、设输入序列为1、2、3,则经过栈的作用后可以得到___________种不同的输出序列。

4、设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的________,第i列上所有元素之和等于顶点i的________。

5、设哈夫曼树中共有n个结点,则该哈夫曼树中有________个度数为1的结点。

6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为_________。

7、__________遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。

8、不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为____________。

9、设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________。

10.设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为_________________________________________________________(设结点中的两个指针域分别为llink和rlink)。

11.根据初始关键字序列(19,22,01,38,10)建立的二叉排序树的高度为____________。

12.深度为k的完全二叉树中最少有____________个结点。

13.设初始记录关键字序列为(K1,K2,…,Kn),则用筛选法思想建堆必须从第______个元素开始进行筛选。

14.设哈夫曼树中共有99个结点,则该树中有_________个叶子结点;若采用二叉链表作为存储结构,则该树中有_____个空指针域。

下半年计算机二级C++考前模拟试题及答案三

下半年计算机二级C++考前模拟试题及答案三

下半年计算机二级C++考前模拟试题及答案三2015下半年计算机二级C++考前模拟试题及答案(三)一、选择题1.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为( )A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG【参考答案】 B2.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是( )A.e3,e1,e4,e2B.e2,e4,e3,e1C.e3,e4,e1,e2D.任意顺序【参考答案】 B3.程序设计语言的基本成分是数据成分、运算成分、控制成分和( )A.对象成分B.变量成分C.语句成分D.传输成分【参考答案】 D4.下列不属于软件工程的3个要素的是( )A.工具B.过程C.方法D.环境【参考答案】 D5.将E-R图转换到关系模式时,实体与联系都可以表示成( )A.属性B.关系C.键D.域【参考答案】 B6.在深度为5的满二叉树中,叶子结点的个数为( )A.32B.31C.16D.15【参考答案】 B7.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。

而实现递归调用中的存储分配通常用( )A.栈B.堆C.数组D.链表【参考答案】 A8.开发软件时对提高开发人员工作效率至关重要的是( )A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序人员的数量D.计算机的并行处理能力【参考答案】 B9.数据处理的最小单位是( )A.数据B.数据元素C.数据项D.数据结构【参考答案】 C10.下述关于数据库系统的叙述中正确的是( )A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据【参考答案】 B11.以下各选项组中,均是C++语言关键字的组是( )A.public operator thisB.shod string staticC.it while>=D.private cout printf【参考答案】 A12.下列描述正确的是( )A.表示m>n为true或mn&&mB.switch语句结构中必须有default语句C.if语句结构中必须有else语句D.如果至少有一个操作数为true,则包含“||”运算符的表达式为true【参考答案】 D13.下面关于break语句的描述中,不正确的是( )A.break可以用于循环体内B.break语句可以在for循环语句中出现多次C.break语句可以在switch语句中出现多次D.break语句可用于if条件判断语句内【参考答案】 D14.下面程序错误的是( )① #include② void main()③ {④ int *p=new int[1];⑤ p=9;⑥ cout<<*p<⑦ delete[]p;⑧ }A.④B.⑤C.⑥D.⑦【参考答案】 B15.不能作为重载函数的调用的依据是( )A.参数个数B.参数类型C.函数类型D.函数名称【参考答案】 D16.在C++语言中,数据封装要解决的问题是( )A.数据的规范化B.便于数据转换C.避免数据丢失D.防止不同模块之间数据的非法访问【参考答案】 D17.类的构造函数和析构函数描述正确的是()A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载【参考答案】 A18.对静态数据成员的描述中,正确的是( )A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用【参考答案】 A19.可以用p.a的形式访问派生类对象p的基类成员a,其中a是( )A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员【参考答案】 D20.下面关于虚函数的描述,错误的是( )A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现【参考答案】 B。

数据结构应用题练习

数据结构应用题练习

1、假设一棵二叉树的层序序列是ABCDEFGHIJ 和中序序列是DBGEHJACIF,请画出该树。

21、有一个完全二叉树按层次顺序存放在一维数组中,如下所示:请指出结点P 的父结点,左子女,右子女。

3、给出下列二叉树的先序序列。

4、已知二叉树的先序遍历序列为ABCDEFGH ,中序遍历序列为CBEDFAGH ,画出二叉树。

答案:二叉树形态AFHGDECB(2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C ①画出这棵二叉树。

②画出这棵二叉树的后序线索树。

③将这棵二叉树转换成对应的树(或森林)。

ABFD (CE HG AED CB HG F AEDCBHG F null(1) (2)1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H,A,C,K,I,L,F。

i.写出该二叉树的后序序列;ii.画出该二叉树;iii.求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。

该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。

该二叉树的形式如图所示:该二叉树高度为:5。

度为2的结点的个数为:3。

度为1的结点的个数为:5。

度为0的结点个数为:4。

5、试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。

答案:215611187341230WPL=12*1+(4+5+6)*3+(1+2)*4=12+45+12=696、已知权值集合为{5,7,2,3,6,9},要求给出哈夫曼树,并计算带权路径长度WPL 。

答案:(1)树形态:325510199761332(2)带权路径长度:WPL=(6+7+9)*2+5*3+(2+3)*4=44+15+20=79(3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。

已知一棵二叉树的前序遍历结果为abcdefg,中序遍历结果为bcaedgf,则后序遍历的结果

已知一棵二叉树的前序遍历结果为abcdefg,中序遍历结果为bcaedgf,则后序遍历的结果

已知一棵二叉树的前序遍历结果为abcdefg,中序遍历结果为bcaedgf,则后序遍历的结果前序遍历结果为 abcdefg,中序遍历结果为 bcaedgf,则后序遍历的结果为 axial degree,则集合中每个边所对应的树是一个树。

因此,其树前序遍历过程中每一个步骤都是错误的。

这是在给定一个树后序遍历(abcdefg)后得到的结果。

所以,对于任意一点 A与 B均为2次遍历结果之差。

这是一个中序遍历的例子。

但是对于已经遍历x,则树前序和中序都是先遍历出来,在这个节点为x且是奇数,则表示该树为 abcdefg树是1个二叉树。

因此后序遍历的结果与本节无关。

由于其仅有数行且没有边,所以一般只需要将前序遍历结果保存在一个指定的位置即可。

但是如果不考虑遍历过程中出现一个参数,就会出现以下问题:若该参数为负数怎么办?如何解决:首先如果这个变量不存在,那么所有状态变量都是0,则该根因函数;如果该参数为“0”则对数据进行唯一遍历即可得到全部结果。

若我们有两个以上的二叉树同时生长且不影响其结果的话,那么这样两个数据都要全部遍历一遍之后得到一个概率为100%的集合。

为了达到这个目的需要构造两个不同的序列:一个序列可以是非0;另一个序列也是1或者是2种不同形式。

(如果存在一种序列)这种算法可以用于处理二次概率论中常用的一些问题。

1.树的基本结构根据概率论,每个元素有 n种状态变量,包括状态变量(比如:“状态变量”的含义为状态变量与状态值之间的关系),可以用如下公式描述:其中 b是状态变量中的1, n是一个随机数; b为状态变量的值为 k; k为一个整数。

其中 N是 n维树体的数列; N是每个边所对应的集合; n 是在一个集合中所对应的边数目。

每个边都是固定的值;所以,每个边代表树2中所有边都是1。

因此每一个节点对任意 b都是唯一的。

由于 k是1个实数,所以在给定条件下该集合是2×2倍数,也就是说从 b开始计算,每一个元素是其前序遍历得到的结果是所有 b中都是1。

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

树与二叉树复习一、填空1、由二叉树的(中)序和(前、后)序遍历序列可以唯一确定一棵二叉树。

2、任意一棵二叉树,若度为0的结点个数为n0,度为2的结点个数为n2,则n0等于(n0=n2+1 )。

3、一棵二叉树的第i(i≥1)层最多有(2i-1 )个结点。

4、一棵有n个结点的二叉树,若它有n0个叶子结点,则该二叉树上度为1的结点个数n1=(n-2n0+1 )。

5、在一棵高度为5的完全二叉树中,最少含有( 16 )个结点。

6、 2.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当折半查找值为82的结点时,( C )次比较后查找成功。

A. 11 B 5 C 4 D 87、在有n个叶结点的哈夫曼树中,总结点数( 2n-1 )。

8、若一个问题的求解既可以用递归算法,也可以用递推算法,则往往用(递推)算法,因为(递推算法效率高)。

9、设一棵完全二叉树有700个结点,则共有( 350 )叶子结点。

10、设一棵完全二叉树具有1000个结点,该树有(500)个叶子结点,有(499 )个度为2的结点,有( 1 )个结点只有非空左子树。

二、判断1、( × )在哈夫曼树中,权值最小的结点离根结点最近。

2、( √ ) 完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。

3、( √ )二叉树的前序遍历序列中,任意一个结点均处在其孩子结点的前面。

4、( × ) 若一搜索树(查找树)是一个有n个结点的完全二叉树,则该树的最大值一定在叶结点上。

5、( √ )若以二叉链表作为树和二叉树的存储结构,则给定任一棵树都可以找到唯一的一棵二叉树与之对应。

6、( √ )若一搜索树(查找树)是一个有n个结点的完全二叉树,则该树的最小值一定在叶结点上。

三、选择1、树最适合用来表示( C )A 、有序数据元素B 、无序数据元素C 、元素之间具有分支层次关系的数据D 、元素之间无联系的数据2、在有n (n>0)个结点的二叉链表中,空链域的个数为( B )。

A 、nB 、n+1C 、n-1D 、不确定3、 已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为( A )。

A 、CBEFDAB 、FEDCBAC 、CBEDFAD 、不定4、对于有n 个结点的完全二叉树, 其高度为( C )A 、nlog2nB 、log2nC 、⎣log2n ⎦+1D 、不确定5、在有n 个结点的二叉链表中,值为非空的链域的个数为( A )A 、n-1B 、2n-1C 、n+1D 、2n+16、将一棵有100个结点的完全二叉树从根开始编号,每层上从左到右依次对结点进行编号,跟结点的编号为1,则编号为49A 、98 B 、99 C 、50 D 、48、7、设有一表示算术表达式的二叉树(见下图), 它所表示的算术表达式是( C ) A. A*B+C/(D*E)+(F-G) B. (A*B+C)/(D*E)+(F-G) C. (A*B+C)/(D*E+(F-G )) D. A*B+C/D*E+F-G8、已知一算术表达式的中缀形式为A +B *C –D/E ,后缀形式为ABC *+DE/–,其前缀形式为( D )。

A 、–A+B*C/DEB 、–A+B*CD/EC 、 –+*ABC/DED 、–+A*BC/DE9、堆的形状是一棵( C )A. 二叉排序树 B.满二叉树 C.完全二叉树 D. 平衡二叉树10、若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为(B)。

A. 79, 46, 56, 38, 40, 84 B. 84, 79, 56, 38, 40, 46C. 84, 79, 56, 46, 40, 38 D. 84, 56, 79, 40, 46, 3811.查找效率最高的二叉排序树是( C )。

A.所有结点的左子树都为空的二叉排序树。

B.所有结点的右子树都为空的二叉排序树。

C.平衡二叉树。

D.没有左子树的二叉排序树。

12.判断序列是否为堆(小根堆或大根堆),如果不是,将其调整为堆。

17,18,60,40,7,32,73,6596,83,72,45,28,54,60,23,38,1525,48,16,35,79,82,23,40,36,7212,24,18,65,33,56,33,92,86,7013、下面编码中哪一个不是前缀码( B )。

A.(00,01,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001)11、在解决递归问题时,若不用递归函数就应借助于数据结构( B )。

A、线性表B、栈C、队列D、双向队列14、一棵完全二叉树的第6层有8个叶结点,该二叉树的结点个数最多是( 111 )。

15、在分量1~11的数组中按从小到大顺序存放11个元素,如果进行二分查找,查找次数最少的元素位于什么位置?A.1B.5C.6D.1116、如果一个完全二叉树最底下一层为第六层(根为第一层)且该层共有8个叶结点,那么该完全二叉树共有多少个结点?A.31B.39C.63D.7117、若有一二叉树的总结点数为98,只有一个儿子的结点数为48,则该树的叶结点数是多少?A.25B.50C.不确定D.这样的树不存在18、假定只有四个结点A、B、C、D的二叉树,其前序遍历序列为ABCD,则下面哪个序列是不可能的中序遍历序列?A.ABCDB.ACDBC.DCBAD.DABC19、对于二叉树,如果其中序遍历结果与前序遍历结果一样,那么可以断定该二叉树___A.是完全二叉树B.所有结点都没有左儿子C.所有结点都没有右儿子D.这样的树不存在正确答案: B 你选对了20、已知一二叉树的后序和中序遍历的结果分别是FDEBGCA 和FDBEACG,那么该二叉树的前序遍历结果是什么?A.ABDFECGB.ABDEFCGC.ABDFEGCD.ABCDEFG21、已知一棵由1、2、3、4、5、6、7共7个结点组成的二叉搜索树(查找树),其结构如图所示,问:根结点是什么?A.1B.4C.5D.不能确定22、在上题的搜索树中删除结点1,那么删除后该搜索树的后序遍历结果是:A.243765B.432765C.234567D.76543223、将1、2、3、4、5、6顺序插入初始为空的AVL树中,当完成这6个元素的插入后,该AVL树共有多少层?A.2B.3C.4D.524、25、在最大堆 {97,76,65,50,49,13,27}中插入83后,该最大堆为:A.{97,76,65,83,49,13,27,50}B.{97,83,65,76,49,13,27,50}C.{97,83,65,76,50,13,27,49}D.{97,83,65,76,49,50,13,27}26、下列序列中哪个是最小堆?A.2, 55, 52, 72, 28, 98, 71B.2, 28, 71, 72, 55, 98, 52C.2, 28, 52, 72, 55, 98, 71D.28, 2, 71, 72, 55, 98, 5227、对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的:A.二叉搜索树(查找树)高度大于等于最小堆高度B.对该二叉搜索树(查找树)进行中序遍历可得到从小到大的序列C.从最小堆根节点到其任何叶结点的路径上的结点值构成从小到大的序列D.对该最小堆进行按层序(level order)遍历可得到从小到大的序列28、一段文本中包含对象{a,b,c,d,e},其出现次数相应为{3,2,4,2,1},则经过哈夫曼编码后,该文本所占总位数为:A.12B.27C.36D.以上都不是29、为五个使用频率不同的字符设计哈夫曼编码,下列方案中哪个不可能是哈夫曼编码?A.00,100,101,110,111B.000,001,01,10,11C.0000,0001,001,01,1D.000,001,010,011,130、如果哈夫曼树有67个结点,则可知叶结点总数为:A.22B.33C.34D.不确定四、应用1、设一正文所用的字符集为X={x1,x2,x3,x4,x5,x6,x7},各字符在正文中出现的频率分别为2,3,4,6,8,11,12。

请用哈夫曼算法为这个字符集设计一套二进制编码,使正文中字符的二进制内部表示最短。

要求:(1)画出对应的哈夫曼树;(2)给出X中各字符的编码表;(3)以X中各字符出现的频度为权,计算其带权路径的长度。

2.设有序顺序表中的元素依次为017, 094, 154, 170, 275,503, 509, 512, 553, 612, 677, 765, 897, 908。

试画出对其进行折半搜索时的判定树, 并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度。

折半搜索时的判定树:ASLsucc=1/14(1+2*2+3*4+4*7)=45/14ASLunsucc=1/15(4*1+5*14)=74/153、试画出从空树开始,由字符序列t d e s u g b j a k r i构成二叉搜索树,然后删除j。

4、试画出从空树开始,由字符序列{e,f,p,k,m,l,b}构成的AVL二叉平衡树,为每次平衡处理指明旋转类型。

相关文档
最新文档