20162305 2017-2018-1 《程序设计与数据结构》第7周学习总结

20162305 2017-2018-1 《程序设计与数据结构》第7周学习总结

教材学习内容总结

  • 1、什么是树:由一组结点及一组边构成,结点用来保存元素,边表示结点之间的连接。每个结点都处在树的某一层中。

  • 2、树的结点:

    根结点:树中唯一没有父结点的结点。

    叶结点:没有任何子结点的结点。

    兄弟结点:有相同父结点的结点。

    内部结点:至少有一个子结点的非根结点。

  • 3、树的遍历:

    先序遍历:访问根,自左至右遍历子树。

    中序遍历:遍历左子树,然后访问根,然后自左至右遍历余下的各个子树。

    后序遍历:自左至右遍历各子树,然后访问根。

    层序遍历:从树的顶层(根)到底层,从左至右,访问树中每层的每个结点。

教材学习中的问题和解决过程

  • 问题1:对树的各种遍历不是十分清楚。

  • 问题1解决方案:结合教材P372树的四种遍历结果,再结合四种遍历方式,理解了各种遍历方式的遍历过程。

  • 问题2:有100个结点的完全二叉树,其高度是多少?

  • 问题2解决方案:结合完全二叉树的性质解决这个问题。具有n个结点的完全二叉树的高度至少为log2(n +1),100个结点对应的最小高度为log2 (101),2^6 = 64,2^7 = 128,所以该二叉树的高度为7。

代码调试中的问题和解决过程

  • 问题1:教材代码中提到的ArrayIterator类并没有,代码中一直标红。

  • 问题1解决方案:在idea中引用了 org.hamcrest.internal.ArrayIterator,这样可以解决,不过在下面代码中的add方法还是标红,没能解决。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • 1、

A stack is a ___________________ data structure. 



A.LIFO

B.FIFO

C.link based

D.array based

E.none of the above

正确答案:A

理解:栈是一个后进先出的数据结构(LIFO)。

  • 2、

When one type of object contains a link to another object of the same type, the object is sometimes called __________ . 



A.circular

B.recursive

C.self-referential

D. a stack

E.a queue

正确答案:C

理解:当一个类型的对象包含一个链接到同一类型的另一个对象,该对象是有时被称为自指示。

  • 3、

A stack is the ideal collection to use when _______________________ . 



A.implementing a merge sort

B.evaluating a postfix expression

C.evaluating an infix expression

D.implementing a quick sort

E.none of the above

正确答案:B

理解:栈在计算后缀表达式的时候是一个理想的收集。

  • 4、

The import keyword is used to define your own packages. 
A.true

B.false

正确答案:B

理解:导入关键字不能定义自己的包。

  • 5、

In a linked implementation of a stack, a pushed element should be added to the end of the list. 

A.true

B.false

正确答案:B

理解:在一个堆栈的链接实现中,一个被push的元素应该被添加到列表的表头。

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

其他(感悟、思考等,可选)

本周学习的树这一结构我认为比栈和队列要困难一些,下周的学习中还是应该以这部分内容为重,写好代码。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 20/20
第二周 100/100 1/2 15/35
第三周 454/554 1/3 15/50
第四五周 772/1326 2/5 20/70
第七周 745/2071 2/7 20/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2017-10-22 18:28  20162305李昱兴  阅读(269)  评论(1编辑  收藏  举报