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小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)