您的位置:首页 > 理论基础 > 数据结构算法

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

2017-10-29 20:34 363 查看

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/681/112/12
第三周298/3662/318/30
第五周688/11622/520/50
第七周1419/25814/920/70
第八周908/34892/1120/90
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

计划学习时间:20小时

实际学习时间:20小时

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

《Java程序设计与数据结构教程(第二版)》

《Java程序设计与数据结构教程(第二版)》学习指导

JDK帮助文档

先序遍历,中序遍历,后序遍历
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐