查找

【学习总结】

查找这一章的学习很直观清晰的讲述了计算机内部的一部分存储结构,这一部分很大程度上的给我们的思维内的对计算机储存处理数据的方式方法,结构,有了新的解释与定义,才这些储存结构内部,的函数调用中时常会用到递归函数,链表,数组,指针,是与上一侧内容紧密结合。

在学习过程中也认识到自己的代码量不够,对书本内容理解不了,实实在在感到了压力和负担,数据结构是比较难理解的,因此上课更随老师的思路,认真理解老师的解释是很重要的,课下也应该多从各个渠道找到一些别人的理解解释与自己的养结合才能理解的全方面透彻。

【思维导图】

 

 

【题目一:是否是二叉搜索树】

(1)设计思路

 

函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:

定义:一个二叉搜索树是一棵二叉树,它可以为空。如果不为空,它将满足以下性质:

非空左子树的所有键值小于其根结点的键值。 
非空右子树的所有键值大于其根结点的键值。 
左、右子树都是二叉搜索树。 
如果T是二叉搜索树,则函数返回true,否则返回false。

 

(2)代码截图

 

 

(3)pta提交列表

 

 

 

【错误分析】

(1)这个代码是从网上查找参考得,一开始时编译错误是代码拿回来改掉的部分没有改完全;

(2)一些细节问题导致编译错误;

(3)阅读代码后,把改掉的部分重新编译正确;

(4)搜索二叉树非空左子树所有键值小于根结点的,非空右子树的所有键值都大于跟结点的。是比较所有左子树的键值而不是单纯的比较左右子结点与根结点的值;

 

 

【题目二:二叉搜索树中的最近公共祖先】

 

【设计思路】

二叉搜索树是排序过的 ,位于左子树的结点都比父结点小,位于右子树的结点都比父结点大,我们只需从根节点开始和两个输入的结点进行比较,如果当前节点的值比两个结点的值都大,那么最低的公共祖先结点一定在该结点的左子树中,下一步开遍历当前结点的左子树。如果当前节点的值比两个结点的值都小,那么最低的公共祖先结点一定在该结点的右子树中,下一步开遍历当前结点的右子树。这样从上到下找到第一个在两个输入结点的值之间的结点。

 

【代码截图】

 

 

【pta提交列表】

 

 

【错误分析】

(1)部分正确是因为搞错了左右子树的方向,在指向下一个节点时左右指反了;

(2)编译错误是复制粘贴时漏选符号;

(3)这个代码是和同学一起从网上查找后阅读参考的;

 

 

 【第三题:QQ帐户的申请与登陆】

【代码截图】

 

这是百度的代码,还没有看懂;

 

【阅读代码】

赵秋霞同学的第一题代码:

 

他的代码较为简单,利用二叉树特性,先判断是否为空树,是则直接返回false,不是空树则与左右孩子比较看是否大于左孩子小于右孩子,由孩子再进行递归操作,代码比较简洁简单。

 

 【pta排名截图】

 

 

posted on 2018-05-27 12:20  lzlzlzptptpt  阅读(136)  评论(1编辑  收藏  举报

导航