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小时

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

参考资料

posted @ 2017-10-29 20:34  张韵琪  阅读(247)  评论(0编辑  收藏  举报