博客作业05—查找
一:学习总结
1查找结构思维导图
2、查找学习体会
查找这一章,主要介绍的是如何在某种数据结构中找出给定条件的元素。
不同的数据结构中需要不同的算法,我们学习了线性表,数表,和哈希表
的查找。并且学会了在相同数据结构下减少时间复杂度的方法和思想。
二:PTA实验作业
题目1:是否是二叉搜索树
1设计思路
bool IsBST( BinTree T )
{
若T是空树则是二叉搜索树;
中序遍历该树得到的新节点的值一定要大于前一个值,否则不是;
返回真;
}
一开始只考虑了左右子树都是二叉搜索树的情况,
但有可能不是这种情况
题目2:二叉搜索树中的最近公共祖先
1设计思路
int LCA( Tree T, int u, int v )//寻找u,v的共同祖先
{
若树为空或者u或v不在该树中 ERROR;
若u或者v就是根节点的值 return T->Key;
若u或者v在同一棵子树上 return T->Key;
若u大于T->key 最近共同祖先在左子树上;
若u大于T->key 最近共同祖先在右子树上;
}
int find(Tree T,int u)//查看u是否在树中
{
若树为空:则返回0;//不在
查找该树:
若找到等值的key,则u在该树中;
否则不在;
}
2代码截图
部分正确:没有考虑到当前节点就是树的公共祖先
和关键字不在书中的情况。
部分正确:无error的输出。
题目3:航空公司VIP客户查询
1设计思路
这里我用的是11个二叉树结构存储数据。身份证号码映射出去,
随机度最高的也就最后一位校验位。
2代码截图
三:截图本周题目集的PTA最后排名
1 PTA排名:
四:阅读代码
哈希表也叫散列表,散列存储结构主要是面向查找的。
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。
散列地址/存储位置 = f(关键字)
哈希表/散列表的构造主要依赖两个问题的解决:
1、散列函数的构造方法;
2、散列冲突的处理方法。
构造散列函数的两个原则:
1、计算简单;
2、散列地址/存储位置/f()函数值均匀分布。