• DS博客作业07--查找


    1.本周学习总结

    1.思维导图

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

    查找这一章主要学习了几种查找的算法,顺序查找和折半查找之前就有所接触,学起来感觉比较容易接受,但是平衡二叉树和b+b-树就感觉比较难,特别是LL,LR,RR,RL调整还不是很熟练,哈希表查找感觉比平衡二叉树要好理解,做题也不是那么费劲;

    2.PTA实验作业

    2.1.题目1:6-1 二叉搜索树的操作集

    2.1.1设计思路

        BinTree Insert( BinTree BST, ElementType X ) //函数Insert将X插入二叉搜索树BST并返回结果树的根结点指针
        {
        if//定义根节点指针
        //将X插入根结点
       //根节点的左右孩子初始化为空; 
       else if //如果x小于父亲结点插到节点的左孩子; 
       else if//x大于父亲结点时候插到根结点的右孩子 ; 
       //返回根结点指针; 
        }
        BinTree Delete( BinTree BST, ElementType X )
        {
        if(!BST)
    {
         //树中找不到元素X; 
    }
        else{
    	if  
    	else if//X小于或大于父亲结点时直接删除X;
    	else if{              //当x=父亲结点时 
    		if{
    			 //找到右孩子中最小结点 
    			 //最小节点的值赋给父亲结点 
    			 //删除该结点的数据; 
    		}
    		else{
    			  //左孩子为空,右孩子不为空 
    			  //右孩子不空,左孩子空 
    		}
    		}
    	}
    	return BST;
    
        }
        Position Find( BinTree BST, ElementType X )//在二叉搜索树BST中找到X,返回该结点的指针;如果找不到则返回空指针;
        {
    
        }
        Position FindMin( BinTree BST ) //FindMin返回二叉搜索树BST中最小元结点的指针;
       {
    
       }
        Position FindMax( BinTree BST ) //FindMax返回二叉搜索树BST中最小元结点的指针;
       {
    
       }
    

    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:6-1是否是二叉搜索树

    2.2.1设计思路

        bool IsBST ( BinTree T )
        {
        BinTree BT=NULL,BT1=NULL;
        if(T==NULL) return true;                    //二叉树为空时返回ture;   
        else if(T->Left==NULL&&T->Right==NULL) return true; //左右子树为空返回ture; 
        BT=T->Left;                                          //BT指向二叉树的左子树; 
        if(BT!=NULL)
        {
         while(BT->Right!=NULL)
        {
            BT=BT->Right;                 //使BT指向二叉树左子树的最右端点;
        }
        }
        BT1=T->Right;        // BT1指向二叉树的右子树;
        if(BT1!=NULL)
        {
        while(BT1->Left!=NULL)
        {
            BT1=BT1->Left;      //使BT1指向二叉树右子树的最左端点;
        }
        }
                                  //需要满足左子树中的最大值小于根节点的键值;
                                    //右子树最小值大于根节点的键值;则返回ture; 
    
       if(BT->Data<T->Data&&BT1->Data>T->Data)
       {
        return true;
       }
       else return false;
       }
    

    2.2.2代码截图

    2.2.3本题PTA提交列表说明

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

    2.3 题目3:7-1 QQ帐户的申请与登陆

    2.3.1设计思路

    2.3.2代码截图


    2.3.3本题PTA提交列表说明


    Q:第一次错是每次输入一行数据就运行结束,一开始以为是循环条件错了,后面发现return 0写到了while里面,导致运行一次就结束
    Q2:格式错误,把输出样例复制就解决了;

    3阅读代码

    3.1 题目1.判断一个单词是否拼写正确

    3.2 解题思路

    用二叉搜索树的插入方式向二叉搜索树中插入一些字符串,然后再用二叉搜索树的查找方式查找该元素是否存在,如果该元素存在的话,代表;拼写的字符串是正确的,否则不正确。

    3.3 代码截图



    3.4 学习体会

    通过阅读这个题目,我了解到了可以利用二叉树来存放一些数据,然后再通过查找的方式与树中的数据进行对比校验,可以判断出数据是否在树中或者数据是否正确

  • 相关阅读:
    学生管理系统
    编译器
    struct和typedef struct
    影响一生的职业建议
    位运算 之(1) 按位与(AND)& 操作
    查询数据库中所有表的记录数,所占空间,索引使用空间
    退出远程桌面全屏状态方法
    收集到较为直观和详细的执行计划和相关统计信息
    profiler跟踪事件存为表之后性能分析工具
    profiler跟踪事件模板文件
  • 原文地址:https://www.cnblogs.com/ljwclot/p/11029292.html
Copyright © 2020-2023  润新知