一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : 3435673055@qq.com
Time of completion:2023.1.1
Last edited: 2023.1.1

目录
查找:折半查找、平衡二叉树、散列表(习题-1、5、6)
第1关:折半查找的递归算法(算法设计题1)
任务描述
相关知识
编程要求
测试说明
参考代码
第2关:平衡二叉树的高度(算法设计题5)
任务描述
相关知识
编程要求
测试说明
参考代码
第3关:散列表关键字的插入和删除(算法设计题6)
任务描述
相关知识
编程要求
测试说明
参考代码
查找:二叉排序树(习题-2、3、4)
第1关:二叉排序树判别(算法设计题2)
任务描述
相关知识
编程要求
测试说明
参考代码
第2关:不小于x的所有数据(算法设计题3)
任务描述
相关知识
编程要求
测试说明
参考代码
第3关:二叉排序树和查找(算法设计题4)
任务描述
相关知识
编程要求
测试说明
参考代码
作者有言
查找:折半查找、平衡二叉树、散列表(习题-1、5、6)
第1关:折半查找的递归算法(算法设计题1)
任务描述
写出折半查找的递归算法。
相关知识
折半查找。
编程要求
根据提示,在右侧编辑器Begin和End间补充代码,完成本关任务。
测试说明
平台会对你编写的代码进行测试:
测试输入(共3行,第1行为元素个数n;第二行为空格分隔的n个元素;第三行为待查找元素):
5
1 2 3 4 5
4
预期输出(共1行,待查元素所在位置):
4
参考代码
#include
#include
#include
#include
#include
第2关:平衡二叉树的高度(算法设计题5)
任务描述
本关任务:一棵平衡二叉树的每个结点都标明了平衡因子b,编写算法求解该平衡二叉树的高度。
相关知识
平衡二叉树
编程要求
根据提示,在右侧编辑器Begin和End间补充代码,完成所要求任务。
测试说明
平台会对你编写的代码进行测试:
测试输入(共1行字符串,为先序构建二叉树的序列):
110###0##
预期输出(共1行,为二叉树高度):
3
参考代码
#include
#include
#include
#include
#include
第3关:散列表关键字的插入和删除(算法设计题6)
任务描述
本关任务:创建散列表,并在其中插入n个关键字;然后删除指定关键字K。设散列函数为H,解决冲突的方法为链地址法。
相关知识
散列表
编程要求
根据提示,在右侧编辑器Begin和End间补充代码,完成所要求任务。
测试说明
平台会对你编写的代码进行测试,以下为两个测试用例的例子。
测试输入(共3行:第1行是关键字的个数n;第二行为空格分隔的n个关键字;第3行为待删除的关键字K):

预期输出(共2组:第1组为插入完成后的地址-关键字对集,第2组为删除K之后的地址-关键字对集如下所示):

参考代码
#include
#include
#include
#include
#include
查找:二叉排序树(习题-2、3、4)
第1关:二叉排序树判别(算法设计题2)
任务描述
写一个判别给定二叉树是否为二叉排序树的算法。
相关知识
二叉排序树。
编程要求
根据提示,在右侧编辑器Begin和End间补充代码,完成本关任务。
测试说明
平台会对你编写的代码进行测试:
测试输入(共一行):
ba##c##
预期输出:
YES
参考代码
#include
#include
#include
#include
#include
第2关:不小于x的所有数据(算法设计题3)
任务描述
本关任务:已知二叉排序树采用二叉链表存储结构,根结点的指针为T,链结点的结构为(lchild, data, rchild),其中lchild、rchild分别指向该结点左、右孩子的指针,data域存放结点的数据信息。请写出递归算法,从小到大输出二叉排序树中所有数据值≥x的结点的数据。要求先找到第一个满足条件的结点后,再依次输出其他满足条件的结点。
相关知识
二叉排序树
编程要求
根据提示,在右侧编辑器Begin和End间补充代码,完成所要求任务。
测试说明
平台会对你编写的代码进行测试:
测试输入(共三行,第一行为列表元素个数n;第二行为以空格分隔的列表中的元素;第三行为x的值):
5
1 3 4 2 5
3
预期输出(共两行,第一行为排序后的列表;第二行为不小于x的所有元素)
1 2 3 4 5
3 4 5
参考代码
#include
#include
#include
#include
#include
第3关:二叉排序树和查找(算法设计题4)
任务描述
本关任务:已知二叉排序树T的结点形式为(llink, data, count, rlink),从空树开始,依次在树中查找n个结点元素,若存在,则记数(count)加1;否则,作为一个新结点插入树中,插入后仍为二叉排序树,写出其非递归算法。
相关知识
二叉排序树(Binary Sort Tree)又称二叉查找树,它是一种对排序和查找都很有用的特殊二叉树。 1.二叉排序树的定义二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)它的左、右子树也分别为二叉排序树。 二叉排序树是递归定义的。由定义可以得出二叉排序树的一个重要性质:中序遍历一棵二叉树时可以得到一个结点值递增的有序序列。
编程要求
根据提示,在右侧编辑器Begin和End间补充代码,完成所要求任务。
测试说明
平台会对你编写的代码进行测试,以下为两个测试用例的例子。
测试输入(共2行:第1行是元素的个数n;第二行为空格分隔的n个元素):
6
1 3 4 2 5 3
预期输出(共2行:第1行为排序后的各元素;第2行为对应每个元素的计数):
1 2 3 4 5
1 1 2 1 1
参考代码
#include
#include
#include
#include
#include
作者有言
如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……