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 学习体会

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

posted @ 2019-06-15 23:18  simonsC  阅读(158)  评论(0编辑  收藏  举报