当前位置:问答库>考研试题

2018年西安电子科技大学网络与信息安全学院951数据结构考研基础五套测试题

  摘要

一、算法设计题

1. 已知二叉树T ,试写出复制该二叉树的算法(t→T) 。

【答案】算法如下:

复制二叉树t 的非递归算法

是二叉树的结点指针的队列,容量足够大

结束本题

2. 请运用快速排序思想,设计递归算法实现求n(n>1)个不同元素集合中的第f(

【答案】算法如下:

在后半部分继续进行划分

在前半部分继续进行划分

) 小元素。

3. 设排序二叉树中结点的结构为下述三个域构成:

Data :给出结点数据的值;left :给出本结点的左儿子结点的地址;right :给出本结点的右儿子结点的地址。设data 域为正整数,该二叉树根结点地址为T 。现给出一个正整数x 。请编写非递归程序,实现将data 域之值小于等于x 的结点全部删除掉。

【答案】算法如下:

非递归删除以r 为根的二叉排序树

栈,容量足够大,栈中元素是二叉排序树结点的指针

沿左分枝向下

出栈,沿栈顶结点的右子树向下刪除,释放被删除结点空间

在二叉排序树T 中删除所有小于等于x

的结点

根结点的值小于等于

x

删除二叉树p ,删除持续到" 根" 结点值大于x 或T 为空树为止

沿根结点左分支向下,査小干等于x 的结点

q 记P 的双亲

结点的值小于等于

x

再査原P 的右子树中小于等于x 的结点

4. 写一算法找出n 个数的最大值和最小值,要求最坏条件下的元素比较次数为

【答案】算法如下:

用最多3n/2-2次比较在n 个元素r 中选出最大值和最小值

n 为偶数时

r 最小值

("最大值

) ;

5. 在二叉排序树的结构中,有些数据元素值可能是相同的,设计一个算法实现按递增有序打印结点的数据域,要求相同的数据元素仅输出一个,算法还应能报出最后被滤掉而未输出的数据元素个数,对如图所示的二叉排序树,输出为:10,12,13,15,18,21,27,35,42。滤掉3个元素。

【答案】算法如下:

递增序输出二叉排序树中结点的值,滤去重复元素

中序遍历左子树

是当前访问结点的前驱,调用本算法时初值为

null

记重复元素,调用

本算法时初值为

前驱后移

中序遍历右子树

结束

算法

二、应用题

6. 将算术表达式

转化为二叉树。

【答案】该算术表达式转化的二叉树如图所示。