查找
一.学习总结
1.查找的思维导图:
2.查找学习体会:查找可分为线性表查找,树表查找,哈希表查找三大类。不同的查找有着不同的查找效率,每一种查找都有其优缺点。其中线性表查找又可分为三种不同效率的查找,其中二分法查找效率最高,但也有局限,不对所有的表都适用。树表查找的平均查找长度(ASL)与树的高度有关,因此当树的元素较多时,一般二叉排序树的查找效率可能会降低,为了提高二叉排序树的查找效率,就有了平衡二叉树和B树,平衡二叉树和B树是高效率查找的二叉排序树,它们的出现都是为了提高树的查找效率。哈希表是一种不同于顺序表存储结构,链表存储结构,索引表存储结构的存储线性表的存储结构,由直接定址法,除留余数法,数字分析法三种基本方法来构造,但存在着哈希冲突,为了消除哈希冲突,有开放地址法,拉链法两种解决方法。只要构造好哈希表,哈希查找效率会非常高。
二.PTA实验作业
题目一:6-2 是否二叉搜索树
(1)设计思路:本题采用递归算法,定义指针p指向以T为根节点的树,若树不为空且存在孩子,则先把T->Left 赋值给指针p,判断T的左子树是否都小于根节点,满足则继续判断T的右孩子是否都大于根节点,若满足则递归IsBST函数判断T的左右孩子是否同样满足,满足返回true,即该树为二叉搜索树,否则返回false,即该树不是二叉搜索树。
(2)代码截图:
(3)PTA提交列表说明:
1.没有考虑到空树时的输出导致答案错误
2.没有正确使用变量导致编译错误
题目二:6-3 二叉搜索树中的最近公共祖先
(1)设计思路:本题采用递归算法,自定义了一个find函数分别判断根节点T和u,v是否有关系,再递归判断T->Right及T->Left是否都和u,v有关系,满足题意则返回根节点的值,不满足则返回ERROR。
(2)代码截图:
(3)PTA提交列表说明:
1.变量使用错误导致编译错误
2.多种情况考虑不全导致部分正确
题目三:7-1 QQ账户的申请与登陆
(1)设计思路:本题采用哈希表存储账户信息,采用除留余数法建哈希表,若输入信息正确,则返回true,若输入信息有误,返回相应错误信息。
(2)代码截图:
(3)PTA提交列表说明:
1.编译环境错误导致编译错误
三.本周题目集的PTA排名:
本次题目集总分:175分
必做题共:145分
(1)PTA排名:43
(2)我的总分:120
四.阅读代码:
1.代码截图
2.代码解读:该查找算法使用除留余数法存储地址信息,用线性探测法处理哈希冲突,用指针p记录键值k除留余数法后的地址,访问该地址的键值是否与k相同,不相同则地址加1,直至找到k值所在的地址,查找成功返回该地址,查找失败返回查找失败提示。