• DS博客作业07--查找


    1.本周学习总结(0--2分)

    1.1思维导图

    1.2.谈谈你对查找运算的认识及学习体会。

    在学习查找的过程中发现自己的平时学习的不足和薄弱之处,从而加深自己。
    折半查找、分块查找(索引顺序查找)、二叉排序树(Binary Search Tree 二叉搜索树等
    在二叉排序树插入关键字代码中需要注意:
    空树:直接插入新结点返回成功
    树不空:检查是否存在关键字重复的结点
    存在:返回插入失败
    不存在:检查根结点的值和待插入关键字值的大小关系递归插入左右子树中

    2.PTA实验作业(6分)

    2.1.题目1:题目名称

    6-1 二叉搜索树的操作集

    2.1.1设计思路(伪代码)

    BinTree Insert( BinTree BST, ElementType X )
        if(!BST)//如果BST为空的话,返回只有一个节点的树
        else//如果BST不是为空的话
        //开始寻找要插入的位置
    BinTree Delete( BinTree BST, ElementType X )
        if(!BST) 输出"Not Found
    ")
        //考虑如果找到这个位置,并且有左节点或者右节点或者没有节点三种情况
       /* 在右子树中找到最小结点填充删除结点 */
      /* 被删除结点有一个或没有子结点*/
    

    2.1.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)




    2.1.3本题PTA提交列表说明。

    Q1:在删除那个函数里面判断X是否大于或小于BST->Data时忽略了小于这个情况,只过空树那个测试点;
    A2:添加一个判断条件,else if(X>BST->Data)BST->Right=Delete(BST->Right,X);//小于错误 就修正了错误;

    2.2 题目2同题目1

    6-2 是否二叉搜索树

    2.2.1设计思路(伪代码)

    中序遍历二叉树
    {
    if T存在
    递归遍历左孩子
    得到的数据放入数组a
    递归遍历右孩子
    }
    判断数组a是否升序
    {
    if(T->Left)//找该点左子树最大值
    if(T->Right)//找该点右子树最大值
    }
    

    2.2.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)

    2.2.3本题PTA提交列表说明。

    Q1:没考虑空树这种情况,看了题目后说空树也是二叉树,
    A1:空树时,或左右子树都为空时要返回false;

    2.3 题目3

    二叉搜索树中的最近公共祖先

    2.3.1设计思路(伪代码)

    while(p!=NULL)
    if(isHere==0) //二叉树没有u return REEOR//找不到
    end if(isHere==0) //二叉树没有v
    Key的大小在v和u之间,那T就是公共祖先 return T->Key
    Key等于u和v中的一个,那T也是祖先 return T->Key
    如果Key比u和v小,去右孩子找祖先
    如果Key比u和v大,去左孩子找祖先
    前面的判断中不能跳出,则找不到 return ERROR
    

    2.3.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)



    2.3.3本题PTA提交列表说明。

    Q1:发现return 0写到了while里面,导致运行一次就结束
    Q2:格式错误,把输出样例复制就解决了;

    3、阅读代码(-2--2分)

    找一份和查找运算相关代码,谈谈你对这个代码认识体会。

    考研题种关于查找、二叉搜索树内容。
    ACM、PTA天梯赛、leecode面试刷题网站,找查找相关题目阅读分析。
    请按照下面内容填写代码阅读内容。请未必认真完成,如果发现应付,没有介绍代码思路、体会等扣分。

    3.1 题目

    插值查找

    3.2 解题思路

    插值查找是在折半查找的基础上进行优化,将mid的值low + high/2 修改为low+(high-low)*(key-R[low])/R[high]-R[low]
    将查找关键字于查找表中的最大最小关键字对比后进行查找。
    时间复杂度为O(log n)

    3.3 代码截图


    3.4 学习体会

    插值查找法:适用于分布均匀的数据中查找,也得是从小到大分布均匀,比如说成绩喽。
    是按照数据位置的分布并利用公式Between = low + (key - data[low])/(data[high] - data[low]) * (high - low)
    预测数据的所在位置。

  • 相关阅读:
    Xshell 连接Linux服务器自动中断问题
    JavaScript验证输入的字符是否包含表情
    jQuery实现单击某个标签改变样式
    ELK之五----logstash收集haproxy日志
    ELK之四-----logstash收集nginx日志及tcp日志
    ELK之三-----JAVA日志多行合并、tomcat json日志收集与处理
    文本三剑客之二---Sed用法
    ELK之二----kibana部署及logstash单(多)日志收集
    ELK之一-----Elasticsearch介绍与部署
    Jenkins之五-----基于脚本实现代码部署与回滚
  • 原文地址:https://www.cnblogs.com/jellysheep/p/11032529.html
Copyright © 2020-2023  润新知