2018年北京市培养单位空间应用工程与技术中心866计算机原理之数据结构考研核心题库
● 摘要
一、算法设计题
1. 元素集合已存入整型数组树T 的非递归算法:CSBT(r,A)
【答案】算法如下:
以存储在数组K 中的n 个关键字,建立一棵初始为空的二叉排序
树
在调用时,
T=null
f 是P 的双亲
申请结点空间
根结点
左子女
右子树根结点的值大于等于根
结点的值
算法结束
2. 在一个循环链队中只有尾指针(记为rear ,结点结构为数据域data ,指针域next) ,请给出这种队列的入队和出队操作的实现过程。
【答案】算法如下:
//rear是带头循环链队列的尾指针,本算法将元素X 插入到队尾
//申请结点空间
//将s 结点链入队尾
//rear指向新队尾
//rear是带头结点的循环链队列的尾指针
//本算法执行出队操作,成功输出队头元素;否则给出出错信息
第 2 页,共 34 页
中,试写出依次取A 中各值构造一棵二叉排序
//s指向队头元素
//队头元素出队
//空队列
3. 已知一棵高度为K 具有n 个结点的二叉树,按顺序方式存储。
(1)编写用前序遍历树中每个结点的非递归算法;
(2)编写将树中最大序号叶结点的祖先结点全部打印输出的算法。 【答案】(1)算法如下:
全局变量
递妇遍历以顺序方式存储的二叉树bt ,i 是根结点下标(初始调用时为
1)
是桟s 的栈顶指针,栈容量足够大
访问根结点,设虚结点
以0表示
右子女的下标位置入
栈
沿左子女向下
取出栈顶元素
结束
(2)算法如下:
打印最大序号叶结点的全部袓先
找最大序号叶结点,该结点存储时在最后
的双亲结点
f
从结点c 的双亲结点直到根结点,
路径上所有结点均为祖先结点
逆序输出,最老的祖先最后输出
结束
4. 线性表中元素存放在向量A(1,... ,,1) 中,元素是整型数。试写出递归算法求出A 中的最大和最小元素。
【答案】算法如下:
第 3 页,共 34 页
//一维数组A 中存放有n 个整型数,本算法递归的求出其中的最小数和最大数
//算法结束
5. 编写算法,求二叉树的宽度。
【答案】算法如下:
求二叉树bt 的最大宽度
空二叉树宽度为
Q 是队列,元素为二叉树结点指针,容量
足够大
front 为队头指针,rear 为队尾指针
last 为同层最右结点在队列中的位置
temp 记当前层宽度,maxw 记最大宽度
根结点入队
同层元素数加
1
左子女入队
右子女入队
一层结束
指向下层最右元素
更新当前最大宽度
二、应用题
6. 设G=(V, E) 以邻接表存储,如图所示,试画出图的深度优先生成树和广度优先生成树。
图
第 4 页,共 34 页
相关内容
相关标签