20172319 《程序设计与数据结构》 第六周学习总结

20172319 2018.10.19-10.26

《程序设计与数据结构》第6周学习总结

目录


教材学习内容总结

第十章 树

  • 10.1 概述:

  • 树(tree) 是一种非线性 结构,其元素被组织成了一个层次 结构。
  • 由一个包含结点 (node) 边(edge) 的集构成,其中的元素被存储在这些结点中,边则将一个结点和另一个结点连接起来。
  • 每一结点都位于该树层次结构中的某一特定层上。
  • 树的根(root) :即位于该树顶层 的唯一结点,一棵树只有一个根结点。
  • 位于树中较低层的结点是上一层结点的孩子(children) , 同一双亲的两个结点称为兄弟(sibling)
  • 没有任何孩子的结点称为叶子(leaf) , 一个至少有一个孩子的非根结点 称为一个内部结点(internal node)
  • 若某一结点A从 开始的路径中位于另一结点B之上,则称A 为B的祖先(ancestor) , 根是树中所有结点的最终祖先。
  • 沿着起始自某一特定结点的路径可以到达的结点是该结点的子孙(descendant)
  • 结点的 :从根结点 到该结点的路径长度。通过计算从根到该结点所必须越过的边数目,就可以确定其路径长度(path length)
  • 树的高度(height) :指从根到叶子之间最远路径的长度。
  • 10.1.1 树的分类:
  • 分类方式有很多种。最重要 的一条标准是树中任一结点可以具有的最大孩子数目。这一值有时候也称为该树的度 (order)

  • 10.2 实现树的策略

  • 10.2.1 树的数组实现之计算策略:
  • 10.2.2 树的数组实现之模拟链接策略:
  • 10.2.3 树的分析:

  • 10.3 树的遍历

  • 10.3.1 前序遍历:
  • 10.3.2 中序遍历:
  • 10.3.3 后序遍历:
  • 10.3.4 层序遍历:

  • 10.4 二叉树

  • 10.7 用链表实现二叉树

  • 10.4.1 find方法:
  • 10.4.2 iteratorInOrder方法:

返回目录


教材学习中的问题和解决过程

  • 问题1:在二分查找中,若查找的项目组里元素个数是偶数个,中间项如何确定?
  • 解决:
  • 解释1:对于查找条件为等式的情况,mid指针可以指向中间偏左,也可以指向中间偏右,对于查找条件为不等式时,要根据具体情况选择,查找大于某数的第一个数值时选择指向中间偏左,查找小于某数的第一个数值时选择之下是那个中间偏右。
  • 解释2:二分查找一般都是左除右加1,意思是如果现在你的查找区间是(k,m),那么中间点 mid = (k + m) / 2;如果你查找的节点在左边就查找 (k, mid),在右边就查找(mid+1,m)。
  • 解释3:一般来说向下取整,比如8个数:1,2,3,4,5,6,7,8,mid=(1+8)/2=4 。

返回目录


代码调试中的问题和解决过程

  • 问题1:PP9.2的题意吃得不是很透彻。

  • 解决:
  • 间隔排序法是冒泡排序法的一种变异,则其大体上的代码结构不会发生变化
  • 仿照冒泡排序法,我的初始代码是这样的,这里间隔为2

  • 运行结果如下:
  • 可以看到,经过遍历比较后,相应间隔的元素都发生了对应的置换,而彼此相邻的元素却没有经过比较,因此导致排序并不完整;
  • 而要想相邻的元素也参与到比较之中,那之后的遍历所取的间隔就要相应地发生一定的变化;
  • 作出相应更改之后的代码:
  • 相应的运行结果:

返回目录


代码托管

返回目录


上周考试错题总结

  • 错题1:无任何错题。

  • 解决:

  • 错题2:

  • 解决:

  • 错题3:

  • 解决:

返回目录


结对及互评

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172316赵乾宸
    • 博客中值得学习的或存在问题:
    • 20172329王文彬
    • 博客中值得学习的或存在问题:
    • 博客内容充实、排版整齐、对教材内容有经过一番认真思考、继续保持。
    • 代码截图做标注时应尽量避免遮挡代码。
    • Markdown的部分缩进有误。
    • 教材问题2提出得很好,可以看出近断时间来反复使用链表、数组去实现同一类型的数据结构起得了一定的成效。

返回目录


学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 3000行 15篇 300小时
第一周 0/0 1/1 12/12
第二周 935/935 1/2 24/36
第三周 849/1784 1/3 34/70
第四周 3600/5384 1/5 50/120
第五周 2254/7638 1/7 50/170

返回目录


参考资料

二分查找过程、比较次数分析、java实现
折半查找的平均查找次数分析
二分查找的平均查找长度详解

返回目录

猜你喜欢

转载自www.cnblogs.com/Tangcaiming/p/9814909.html