1、注意:本答案仅供参考,不作为标准答案,大家谨慎参考。一.选择题1 节点 N 的子树数称为节点 N 的()A.度 B.叶子 C.分支节点2 位于二叉树第 i 层上的节点,最多为()A. B.2n C.-i 1-i24.先预测被查找的记录的大概位置,然后从这个位置向前或向后顺序扫描,这种查找称为(折半查找)A. 顺序查找 B. C. D.分块查找5.假设二维数组 A6x8,用相邻的 个字节存储,A 数组的存储基址为 1000,按列序存储,存储器按字节编址,A35元素的存储起始地址是(课本 92 页)A.1092 B.1088 C.1116 D.11326.设完全二叉树的层序序列为 ABCDEFGH
2、IJ,问其后序遍历结果是()A.ADIBEJACFG B.HIDJEBFGCA C.HDIBJEAFCG D.ABEDHIJCGF7.下列序列为堆得是()A.(98,46,84,71,37,33,19)B.(98,84,37,71,33,19,46)C. (98,84,46,71,33,37,19) C.(19,37,98,33,46,84,71)二简答题1 简述栈和队列的差别 答: 1.队列先进先出,栈先进后出; 2 栈是限定只能在表的一端进行插入和删除操作的线性表。队列是限定只能在队头进行插入和在队尾进行删除操作的线性表。3.遍历数据速度不同。2 简述顺序表和链表的差别 答:顺序表存储位置
3、是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定长度,一旦分配内存,则在使用中不可以动态的更改。他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据,缺点是在作插入和删除操作的时,需移动大量元素。 链表是通过指针来描述元素关系的一种数据结构,他可以是物理地址不连续的物理空间。不能随即访问链表元素,优点是对于数组,可以动态的改变数据的长度,分配物理空间。 (在使用中:如果一个数组在使用中,查询比较多,而插入,删除数据比较少,数组的长度不变时,选顺序表比较合理。如果插入,删除,长度不定的数组,可以选链表。 )3简述一棵度为2的树与一棵二叉树的差别 答:二者都是度不大于
4、2的树,但二叉树的子树有左右之分,其次序不能任意颠倒,且度为2的树的最大结点的度为2 。3 简述哈序查找的主要思想 答: 哈希查找的本质是先将数据映射成它的哈希值。哈希查找的核心是构造一个哈希函数,它将原来直观、整洁的数据映射为看上去似乎是随机的一些整数。 哈希查找并不查找数据本身,而是先将数据映射为一个整数(它的哈希值),并将哈希值相同的数据存放在同一个位置一即以哈希值为索引构造一个数组,然后查找具有这个哈希值的数据,这就大大减少了查找次数。4简述线性表的顺序表和链表两种存储结构各有那些优点 答:顺序表的优点是:访问数据比较方便,可以随即的访问表中的任何一个数据。链表的优点是:对于数组,可以
5、动态的改变数据的长度,分配物理空间。4 简述栈和队列的差别 答:同题 15 举例说明 一棵度为 2 的树与一棵二叉树有何区别 答:课本 P123 页有例子,自己可以看一下。6 简述 Kruskal 提出的求 n 个顶点的网络 c(G)的的主要思想 答:把 n 个顶点看成看成 n 棵分离的树(每棵树只有一个顶点) ,每次选取可连接两个分离树中权值最小的边把两个分离的树合成一个新的树取代原来的两个分离树,如果重复 n-1 步后便得到最小生成树。 (Prim 算法的主要思想:从连通网 N=V,E中的某一顶点 U0 出发,选择与它关联的具有最小权值的边(U0,v) ,将其顶点加入到生成树的顶点集合 U
6、 中。以后每一步从一个顶点在 U中,而另一个顶点不在 U 中的各条边中选择权值最小的边 (u,v),把它的顶点加入到集合 U 中。如此继续下去,直到网中的所有顶点都加入到生成树顶点集合 U 中为止。 )三综合题 图示:代表头结点单链表的头指针(课本28页)带表头结点单链表的首元结点 线性表的插入和删除操作主要是() (课本27页) 答: 线性表的插入运算是指在表的第 i (1in+1) 个位置上,插入一个新结点 x,使长度为 n 的线性表(a 1,a i-1,a i,a n) 变成长度为 n+1的线性表 (a1,a i-1, ,a i,a n) 线性表的删除运算是指将表的第 i(1in)结点删
7、除,使长度为 n 的线性表: (a1,a i-1,a i,a i+1,a n) 变成长度为n-1的线性表(a 1,a i-1,a i+1,a n) 写出在双向链表中删除已知结点的操作。 (37页) 树图具有(有向图)和(无向图) 图的遍历算法有(深度优先搜索和广度优先搜索)简记为(DFS 和 BFS)分别借用(邻接矩阵和邻接表)数据结构来实现 已知一棵二叉树的 DLR 遍历结果为IJ,遍历结果为 EBCDAFHIGJ,试画出这个二叉树(大家自己画一下吧,不是很难)7 用箱图示(15,10,12,20,43,60,45,30,7,5)的基数排序的过程8 假设用于通讯的电文仅由 A,B,C,D,E
8、,F,G,H 共 8 个字母组成,各字母在电文中出现的频率分别为 5,25,3,6,10,11,36,4 这8 个字母设计 HUFFman 编码。9 见下图,试画出删除 K 节点后的二叉排序树10 写出在双向链表已知结点 P 之前插入一个新结点 F 的操作。 (36 页)11 已知一棵二叉树的遍历结果为 EDCBHJG,LDR 遍历结果为 EBCDAF,试画出这个二叉树(这个同上,自己画一下)12 图示(15,10,12,20,43,60,45,30,7,5)的堆排序的过程13 给定权集合(5,25,3,6,10,11,36,4),构造相应的 Huffman 二叉树,并计算它的带权路径长度设计题1 试写出在以 head 为头指针的单链表的第 i 个结点之前插入数据的结点的插入算法,该链表带有表头结点(P38 页)试写出对有序表 ST 按其关键字进行折半查找的算法(220 页)3 试写出先序遍历二叉树的递归算法(129 页)4 试写出在以 head 为头指针的单链表的第 i 个结点之后插入数据的结点的插入算法,该链表带有表头结点 header(29页)4014203035282110K