2019-2020-26 《数据结构与面向对象程序设计》第9周学习总结
2019-2020-26 《数据结构与面向对象程序设计》第9周学习总结
目录
教材学习内容总结
- 树
- 树是非线性结构,其元素组织为一个层次结构
- 树的度表示数中任意结点的最大子结点数
- 有m个元素的平衡n叉树的高度是logn m
- 树的遍历有四种方法:先序遍历,中序遍历,后序遍历和层序遍历
- 使用数组实现二叉树时,位于位置n的元素的左孩子在(2n+1)的位置,其右孩子在(2×(n+1))的位置
- 树的基于数组的存储链实现方式可以占据数组的连续位置,不管树是不是完全树
- 如何在一般二叉树中添加及删减元素,要取决于树的用途
- 二叉查找树
- 二叉查找树是一颗二叉树,对其中的每个结点,左子树的元素小于父结点的值,二右子树上的元素大于等于父结点的值
- 最有效的二叉查找树是平衡的,所以每次比较时可以排除一半的元素
- 如果没有其他操作,二叉查找树形由元素的添加次序决定
- 当从二叉查找树中删除元素时要考虑删除的结点位置
- 可以对二叉查找树进行旋转以恢复平衡
教材学习中的问题和解决过程
-
问题1:二叉树和二叉查找树的不同
-
问题1解决方案:
二叉查找树树一般是排序树的一种,并且加点条件,就是任意一个节点的两个叉的深度差不多(比如差值的绝对值小于某个常数,或者一个不能比另一个深出去一倍之类的)。
这样的树可以保证二分搜索任意元素都是O(log n)的,一般还附带带有插入或者删除某个元素也是O(log n)的的性质。 -
问题2:什么是决策树
-
问题2解决方案:是一种分类与回归方法,主要用于分类,决策树模型呈现树形结构,是基于输入特征对实例进行分类的模型。
用决策树进行分类,从根结点开始,对实例的某一个特征进行测试,根据测试结果分配往对应的子结点中去,每个子结点对应一个特征的取值,递归的进行分类测试和分配,最终到达对应的叶结点,完成本次的分类
代码调试中的问题和解决过程
- 问题1:如何实现决策树
- 问题1解决方案:在结对伙伴的帮助下理解了决策树的意思,然后在网上找到有关博客进行了更近一步的了解(博客具体看最后的链接)
代码托管week9
上周考试错题总结
- Which of the following is not an operation on a stack?
A .push
B .pop
C .peek
D .dequeue
E .all of the above are operations on a stack
正确答案: D 你的答案: E
解析:出列操作是队列操作。
2.What exception is thrown if the pop method is called on an empty stack?
A .EmptyStackException
B .NoSuchElementException
C .ArrayOutOfBoundsException
D .EmptyCollectionException
E .none of the above
正确答案: D 你的答案: E
解析:如果在空堆栈上调用pop方法,则引发EmptyCollectionException。
3.Which of the following methods removes an element from a queue?
A .enqueue
B .dequeue
C .first
D .pop
E .push
正确答案: B 你的答案: D
解析:dequeue方法从队列中删除元素
4.n a array-based implementation of a queue that stores the front of the queue at index 0 in the array, the dequeue operation is ___________________.
A .impossible to implement
B .has several special cases
C .O(n)
D .O(n2)
E .none of the above
正确答案: C 你的答案: D
解析:在应用remove之后,将队列中的所有元素下移到索引中需要线性时间。
5.One of the uses of trees is to provide simpler implementations of other collections.
A .True
B .Flase
正确答案: B 你的答案: A
结对及互评
点评:
- 博客中值得学习的或问题:
- 对课本,代码进行多方位的思考。
- 认真寻找自己的不足之处。
- 举例说明问题。
- 代码中值得学习的或问题:
- 基于评分标准,我给本博客打分:14分。得分情况如下:
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 结对学习情况真实可信的加1分
- 正确使用Markdown语法
- 模板中的要素齐全(加1分)
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 教材学习中的问题和解决过程, 加5分
- 代码调试中的问题和解决过程,加2分
点评过的同学博客和代码
-
本周结对学习情况
- 赵沛凝20182301
- 结对照片
- 结对学习内容
- 决策树的写法
-
上周博客互评情况
其他(感悟)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 26/200 | 2/2 | 7/7 | |
第二、三周 | 235/327 | 3/5 | 15/23 | |
第四周 | 123/450 | 2/7 | 8/31 | |
第五周 | 850/1300 | 2/9 | 9/40 | |
第六周 | 846/1696 | 2/11 | 7/47 | |
第七周 | 1614/3310 | 2/13 | 15/62 | |
第八周 | 360/3670 | 1/14 | 10/72 | |
第九周 | 2611/6281 | 2/16 | 10/82 |
- 实际学习时间:10小时