单项选择(2023年暨南大学

按照二叉树的定义,具有3个结点的二叉树有【 】种。

A、3

B、4

C、5

D、6

答案解析

C

讨论

将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,根结点的编号为1,则编号为35的结点的左孩子编号为【 】。

循环链表的主要优点是【 】

若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则最节省运算时间的存储方式是【 】

对含有n (n>0)个记录的文件进行外部排序,采用置换-选择排序生成初始归并段时需要使用一个工作,工作区中能保存m个记录,请回答下列问题。(1) 如果文件中有19条记录,其关键字分别为:51,94,37,92,14,63,15,99,48,56,23,60,31,17,43,8,90,166,100,当m=4时,可生成几个初试归并段,各是什么?(2)对任意m (n≫m>0),生成的第一个初试归并段长度最大值和最小值分别多少?

已知有向图G采用邻接矩阵存储,其定义如下:typedef struct{//图的定义 int numberVertices,numEgges;//图中实际的顶点数和边数 char verticesList[maxV];//顶点表 int edge[maxV][maxV];//邻接矩阵}MGraph;将图中出度大于入度的顶点称为K顶点,如图,a和b都是K顶点,设计算法 int printVertices(MGraph G)对给定任意非空有向图G,输出G中所有K顶点,并返回K顶点的个数。(1)给出算法的设计思想。(2)根据算法思想,写出C/C++描述,并注释。

使用快速排序算法对数据进行升序排序, 若经过一次划分后得到的数据序列是 68, 11, 70, 23, 80, 77, 48, 81, 93, 88,则该次划分的轴枢【】。

下列排序算法中,不稳定的是【 】。Ⅰ. 希尔排序Ⅱ. 归并排序Ⅲ. 快速排序Ⅳ. 堆排序Ⅴ. 基数排序

现有长度为 5,初始为空的散列表HT,散列函数H(k)=(k+4) mod 5, 用线性探查再散列法解决冲突。若将关键字序列 2022, 12, 25 依次插入HT中,然后删除关键字 25 ,则HT中查找失败的平均查找长度为【 】。

对含有 600 个元素的有序顺序表进行折半查找,关键字之间的比较次数最多是【 】

下列关于非空 B 树的叙述中,正确的是【 】Ⅰ. 插入操作可能增加树的高度Ⅱ. 删除操作一定会导致叶结点的变化Ⅲ. 查找某关键字一定是要查找到叶结点Ⅳ. 插入的新关键字最终位于叶结点中

在一棵二叉树中,中序遍历的第一个结点,是二叉树的最左下结点。

已知一颗二叉树的先序序列和后序序列,一定能构造出该树。

由树转化为二叉树,该二叉树的右子树不一定为空。

设二叉树中度为0的结点数为30,度为1的结点数为20,则该二叉树中总共有_____个结点数。

在N个结点的线索二叉树中线索的数目为______.

阅读下面的程序代码,写出此函数的功能。void F(Bitree T,Stack &S){ if(T){ Push(S,T->data); if(!T->Lchild && !T->Rchild)PrintStack(S); else{ F(T->Lchild,S); F(T->Rchild,S); } Pop(S); }}

假设表中关键字序列为(41,36,58,12,79,25),将关键字依次插入一棵初始为空的二叉排序树,然后删除结点 41。(1) 画出二叉排序树的生成过程;(2)画出删除结点41后的二叉排序树。

假设二叉树采用二叉链表存储结构,试编写一个非递归算法,输出中序遍历序列中第k个结点的数据值。

一个深度为 h 的满 m 叉树有如下性质:第 h 层上的结点都是叶结点,其各层上每个结点有 m 棵非空子树。问:(1)第 k 层最多有多少个结点?(k≤h )(2)整棵树最多有多少个结点?(3)若按层次从上到下,每层从左到右的顺序从1开始对全部结点编号,编号为 i 的结汽的双亲结点的编号是什么?编号为 i 的结点的第 j 个孩子结点(若存在)的编号是什么?

证明,由一棵二叉树的前序序列和中序序列可唯一地确定这棵二叉树。设一棵二叉树的前序序列为ABDGECFH,中序序列为DGBEAFHC,试画出该二叉树。