阅读下列程序说明和C程序,把应填入其中(n)处的字句,写在对应栏内。
【程序说明】
已知某二叉树的前序遍历和中序遍历序列,可以得到该二叉树的结构。本程序实现了根据这两个遍历序列生成一棵链接表示的二叉树。
构造二叉树的算法要点是:由前序遍历序列,该序列的第一个元素是根结点元素。该元素将中序遍历序列分成左、右两部分,那些位于该元素之前的元素是它的左子树上的元素,位于该元素之后的元素是它的右子树上的元素。对于左、右子树,由它们的前序遍历序列的第一个元素可确定左、右子树的根结点,参照中序遍历序列又可进一步确定子树的左、右子树元素。如此递归地参照两个遍历序列,最终构造出二叉树。
两个遍历序列作为主函数main()的参数。为简单起见,程序假定两个遍历序列是相容的。主函数调用函数restore()建立二叉树。函数restore()以树(子树)的前序遍历和中序遍历两序列及序列长为参数,采用递归方法建立树(子树)。函数postorder()实现二叉树的后序遍历序列输出,用来验证函数restore()建立的二叉树。
【程序】
include(stdio.h>
include<stdlib.h>
define MAX 100
typedef struct node{
char data;
struet node * llink,*rlink;
}TNODE;
charpred[MAX],inod[MAX];
TNODE * restore (Char*,char*,int);
main(int argc,Char* *argv)
{
TNODE * root;
if(argc<3)exit(0);
strcpy(pred,argv[1]);
strcpy(inod,argv[2]);
root=restore(pred,inod,strlen(pred))postorder(root);
printf("\n\n");
}
TNODE * restore(Char * ppos,char * ipos,int n)
{ /*参数包括前序遍历序列数组和中序遍历数组*/
TNODE * ptr;
Char * rpos;
int k;
if(n <=0)return NULL;
ptr= (TNODE *)malloc(sizeof(TNODE));
ptr→data=(1);
for (2) rpos=ipos;rpos <ipos+n;rpos++ )
if(*rpos== * ppos)break;
k =(3);
ptr→llink = restore(ppos+1, (4),k);
ptr→rlink = restore (5) + k,rpos + 1,n-1-k);
return ptr;
}
postorder(TNODE *ptr)
{ if(ptr==NULL)return;
postorder(ptr→llink);
postorder(ptr→rlink);
prinft("%c",ptr→data);
}
已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是( )。
A.ABCDE
B.ECABD
C.EACDB
D.CDEAB
首先访问结点的左子树,然后访问该结点,最后访问结点的右子树,这种遍历方式称为 ( )。
A.前序遍历
B.中序遍历
C.后序遍历
D.顺序遍历
已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是 ( )。
A. ABCDE
B. ECABD
C. EACDB
D. CDEAB
前序遍历序列与中序遍历序列相同的二叉树为(1),前序遍历序列与后序遍历序列相同的二叉树为(2)。
A.根结点无左子树的二叉树
B.根结点无右子树的二叉树
C.只有根结点的二叉树或非叶子结点只有左子树的二叉树
D.只有根结点的二叉树或非叶子结点只有右子树的二叉树
计算机二级选择题题目(带答案)下列关于栈和队列的描述中,正确的是 ()栈是先进先出队列是先进后出队列允许在队友删除元素栈在栈顶删除元素答案:D解析:栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。已知二叉树后序遍历序列是CDABE中序遍历序列是CADEB它的前序遍历序列是 ()A ABCDEB)ECABDC)EACDBD)CDEAB答案: C解析:由于后序遍历的最后一个元素为E所以E 为根结点,所以它的前序遍历的首个元素为E,故排除A和D)选项。由于中序遍历中,元素B 在元素根结点 E 的后面,所以 B为二叉树的右子树, 并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为B,故选项 C为正确选项,即该二叉树的前序遍历序列是EACD B3)在数据流图中,带有箭头的线段表示的是()A控制流B)数据流C模块调用D事件驱动答案: B解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。4)结构化程序设计的3 种结构是()A顺序结构,分支结构,跳转结构B)顺序结构,选择结构,循环结构C分支结构,选择结构,循环结构D分支结构,跳转结构,循环结构答案: B解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。 遵循程序结构化的设计原则, 按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。( 5)下列方法中,不属于软件调试方法的是()A )回溯法)强行排错法C )集成测试法D 原因排除法答案:C解析:软件调试主要采用以下三种方法:强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。下列选项中,不属于模块间耦合的是()A内容耦合异构耦合C控制耦合D数据耦合答案:B解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合-若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合-若一组模块都访问同一全局数据结构,则称为公共耦合。外部耦合-若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合-若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。标记耦合-若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。数据耦合-若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。非直接耦合-若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。下列特征中不是面向对象方法的主要特征的是()A多态性B)标识唯一性C封装性D耦合性答案: D使用现实世界解析: 面向对象设计方法与面向过程设计方法有本质的不同, 其基本原理是:的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。( 8)在数据库设计中,将E-R 图转换成关系数据模型的过程属于()A )需求分析阶段概念设计阶段C逻辑设计阶段D物理设计阶段答案:CDBMS解析:避箱谶脐概念轴是各种数据模型的共同基础,为能搬某一实明需求,逃、猴概念辅进步转相的数据模型,迸是数据胆辙&E-R图关系模式蛔ffi化及飕、观(9)在一棵二叉树t,第5 Jg维数最多是()A)8C)15D)16i-1答案:D解析:根据二叉树勺性质二叉梯i (i 1)层至多有 2个结。得到第 5JB维数最多是16个。下列有关数据库勺描述,正确的是()A数据服提指谡雌理系统B)数据腋的根本目楣要解决数据共享的姻C数据用一个独立的系统不需要操作系继支持D数据廉统,数据的物理射必须覆箱一致答案:B解析:数据的目的则髓醺血需求的翼关翔B数据版的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用雁够同映翻据库的数据;减小数据的冗余, 以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开圈狮阶天气n他生活提供良好的帮助,它应诬i算机的哪一删科学微信息鲤C)程控制D )人工智能答案:A解析:科学鳏(数帧 解决的大都是从科学研究和工程技术中所提出的一些复杂勺数学题天微出计件幽(12)已知某部的区位限3222,H国fig。)4252DB)5242HC)4036HD)5524H答案: C解析:区位礴程晒区骤分嬲区号、位号辕虹魁数。分用考区号、位号各 +20H (区位硅2020HH国栅。神区号32榭”#20,位号22转撅十六避116。分20H,即得4036H计算机软件系统包括()A) 程序、数据和相应的文档B )系统软件和应用软件C )数据库管理系统和数据库D )编译系统和办公软件答案:B解析:软件系统可分为系统软件和应用软件两大类。若已知一汉字的国标码是5E38H则其内码是()A)DEB8B)DE38C)5EB8D)7E58答案:A解析:汉字机内码、国标码之间的关系为:机内码是汉字交换码(国标码)两个字节的最高位分别加1 ,即汉字交换码(国标码)的两个字节分别加80H得到对应的机内码(国标码+8080H=机内码)。(15)汇编语言是一种()A)依赖于计算机的低级程序设计语言B )计算机能直接执行的程序设计语言C)独立于计算机的高级程序设计语言D )面向问题的程序设计语言答案:A解析:与机器语言相比较,汇编语言在编写、修改和阅读程序等方面都有了相当的改进,但仍然与人们使用的语言有一段距离。汇编语言仍然是一种依赖于机器的语言。(16)构成CPU勺主要部件是()A)内存和控制器B )内存、控制器和运算器C )高速缓存和运算器D )控制器和运算器答案:D解析:CPU由运算器和控制器组成。(17)用高级程序设计语言编写的程序,要转换成等价的可执行程序,必须经过()汇编BB编辑C解释D编译和连接答案: D必须经过编译和连接。解析:用高级程序设计语言编写的程序, 要转换成等价的可执行程序,RAM勺特点是()A、 )海量存僦B )存解其中的信息可以永久保存C ) 一旦断电存罐其上的信息将全部小时 且无法恢复D )只是用来存儆据的答案:C解析:RAM是算机内存偏中的一部分。说机内存解由ROMS RAMS。RO皿只诲储器,特点是它的信息是可以永久保存的。RAM可谕写存解,特点是一旦断电它的信息将全部去。(19)下面关于多媒体系统I勺描述中,不正确的是()A)多媒体系纤般是一种多任烁统B )多媒体系维威字、像、声音、活娜须鞭进管理的系统C )多媒体系缴能在微型正机上运行D )数字廉3腿8的关殿术答案:C解析:多媒体系统T以在所有安装了多媒体软 硬件的座机系统运行。(20)正确的IP地址是()C)202.20、2.1答案:C解析:网舞口卡(版网卡) 是构成网金翁基本谶用于将座机和通信期接起来,以便组就算机之进fi而燃嫌输 因此 每台接到局域网的评机(工作站或服篇)都需要安装一则卡。(21)下面关于算法的叙述中,正确的是 ()A)算法的挪效率与数据的存储型底B算法的有那是指算法必犍在有限个步骤1后终C算法的空间蜃是指算法程序中指令(或语句)的条数D以上三种描述都正确答案:B解析:算法在运行述?中需物存储阍大小称舞法的空迹蜃。算法的有妣是指一个算法必如施有限的步殿后维。(22)下列二叉柳述中,正确的是()A )任何一棵二叉在必獭一个度为的缙)二叉栩度可以小于C )非空二叉树有 0 个或 1 个根结 点D
若一个二叉树的叶子结点是某子树的中序遍历序列中的最后一个结点,则它必是该子树的(47)序列中的最后一个结点。
A.前序
B.后序
C.前序和后序
D.都不是
已知二叉树后序遍历序列是dabec,中序遍历序列是debac,那么它的前序遍历序列是( )。
A.Acbed
B.decab
C.deabc
D.cedba
若一棵二叉树结点的前序遍历序列是A、B、C,后序遍历序列是C、B、A,则该二叉树结点的中序遍历序列( )。
A.必为A、B、C
B.必为A、C、B
C.必为B、C、A
D.不能确定
首先访问结点的左子树,然后访问该结点,最后访问结点的右子树,这种遍历称为( )。
A.前序遍历
B.后序遍历
C.中序遍历
D.层次遍历
后序遍历序列与中序遍历序列相同的二叉树为(85),前序遍历序列与后序遍历序列相同的二叉树为(86)。
A.根结点无左子树的二叉树
B.根结点无右子树的二叉树
C.只有根结点的二叉树或非叶子结点只有左子树的二叉树
D.只有根结点的二叉树或非叶子结点只有右子树的二叉树