博客作业05--查找
1.学习总结
1.1查找的思维导图
1.2 查找学习体会
查找这一功能在很多数据结构中都有用到,这一单元系统的学习了个多种查找方法
查找主要分为静态查找和动态查找,选用合适的查找算法十分重要,查找的ASL是查找算法
优劣的重要指标
2.PTA实验作业
2.1 题目1:7-1 QQ帐户的申请与登陆
设计思路
定义map<long long,string>qqmap存放账号密码
定义迭代器it
输入操作次数n
while(n){
输入操作choice
输入账号temp密码pw
if choice = N创建账号
用it在map中查找该qq号
if 找到 输出ERROR: Exist
else 将该qq号和密码存入qqmap 输出New: OK
else if choice = L
if 在 qqmap中找到账号&&密码正确 输出Login: OK"
else 登陆失败
}
代码截图
PTA提交列表说明
这一题学会用map就很简单了,就是输出不小心格式错误了一下
2.2题目2:是否二叉搜索树
设计思路
bool IsBST ( BinTree T ){
判断空树或单子树的情况
判断左子树的最大节点和右子树最小节点和当前节点的关系
判断左右子树与当前节点关系
}
代码截图
PTA提交列表说明
这题对我来说有点难度,刚开始的时候想的比较简单,没有考虑到左子树的最大节点要小于当前节点和右子树的最小节点要大于当前节点
所以有一个测试点一直过不去,后来也是看了同学的代码才知道怎么做
2.37-2 航空公司VIP客户查询
设计思路
map<string,int>VIPmap
输入vip数量n和最短历程min
定义迭代器it
while(n){
输入身份证号str和历程len
用迭代器it在map中查找str
if it = VIPmap.end
将str和对应的len存入VIPmap
else VIPmap[str]+=len
}
输入查找次数n
while(n){
输入str
用it查找str
if it = VIPmap.end
输出no info
else 输出里程数it->second
}
代码截图
PTA提交列表说明
这题只要会map也不难和上一题基本一样,前面几处错误是因为身份证号码的存储问题,而且这题输入输出要用
scanf和printf
3.截图本周题目集的PTA最后排名
3.1 PTA排名
3.2我的总分:145
4. 阅读代码
红黑树查找
这是红黑树的结构体,和普通二叉搜索树相比多了一个颜色的属性,其他的也都一样
这是红黑树的左旋和右旋
红黑树的插入
这是用来判断红黑树该左旋还是右旋是红黑树实现的核心算法,红黑树是平衡二叉树的一种优化,可以利用上色的
方法判断出哪个节点将要失衡,并将其调整为平衡二叉树,大大减少了查找的时间复杂度,STL中的map用的就是红黑色
来对其key值进行排序,应用很广泛