20162307 2017-2018-1 《程序设计与数据结构》第8周学习总结
20162307 2017-2018-1 《程序设计与数据结构》第8周学习总结
教材学习内容总结(第十七章 二叉查找树)
概述
-
本章是在讲二叉查找树的特性、链式实现方式、旋转
-
讨论Comparable接口
-
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。
-
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树
- 设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点,那么会有y.key<=x.key;如果y是x右子树中的一个节点,那么有y.key>=x.key。
-
由图可以看出,对于遇到的每个结点x,都会比较x.key与k的大小,如果相等,就终止查找,否则,决定是继续往左子树还是右子树查找。因此,整个查找过程就是从根节点开始一直向下的一条路径,若假设树的高度是h,那么查找过程的时间复杂度就是O(h)。
-
部分代码
public void add (T item) { if (root == null) root = new BSTNode<T>(item); else ((BSTNode)root).add(item); } public T remove (T target) { BSTNode<T> node = null; if (root != null) node = ((BSTNode)root).find(target); if (node == null) throw new ElementNotFoundException ("Remove operation failed. " + "No such element in tree."); root = ((BSTNode)root).remove(target); return node.getElement(); }
教材学习中的问题和解决过程
代码调试中的问题和解决过程
上周考试错题总结
结对及互评
本周结对学习情况
- [20162303](http://www.cnblogs.com/syx390234975/)
- 结对学习内容
- 学习第十七章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 68/68 | 1/1 | 12/12 | |
第三周 | 298/366 | 2/3 | 18/30 | |
第五周 | 688/1162 | 2/5 | 20/50 | |
第七周 | 1419/2581 | 4/9 | 20/70 | |
第八周 | 908/3489 | 2/11 | 20/90 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:20小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)