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

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

教材学习内容总结

  • 树的概述

    • 树由一个包含结点的集构成。
  • 树(一种非线性结构,其中的元素被组织成一个层次结构)
    • 结点:树中的一个位置。
    • :树中两个结点的连接。
    • 根结点:就是指位于该树顶层的唯一结点。一棵树只有一个根结点,根结点没有父节点。
    • 子结点:一个树中较低层的结点是上一层结点的子结点。位于树中当前结点下面的结点,并由边与之直接连接。
    • 同胞结点:属于同一结点的子结点。
    • 叶结点:没有任何子结点的结点。
    • 内部节点:一个至少有一个子结点的非根节点。
    • 祖先节点:位于当前结点以上的结点。
    • 后代结点:位于当前结点一下的结点。
    • 路径长度:通过计算从根到该结点所必须越过的边数目。
    • 高度:从根到叶子之间的最远路径的长度。
    • 阶(度):树中任一结点可以具有的最大子结点的数目。
  • 树的分类:
    • 二叉树:结点最多具有两个孩子的树。
    • 完全树:如果某树是平衡的,且底层所有叶子都位于树的左边,则认为该树是完全的。
    • 满树:如果一颗n元树的所有叶子都位于同一层且每一结点要么是一片叶子,要么是正好具有n个孩子。
    • 完全二叉树:在每个K层上都有2^k个结点,最后一层除外,在最后一层中的结点必须是在最左边结点。
  • 树的遍历:
    • 前序遍历:从根结点开始,访问每一个结点及其孩子。(A->B->D->E->C)
    • 中序遍历:从根结点开始,访问结点的左侧孩子,然后是该结点,再然后是任何剩余的结点。(D->B->E->A->C)
    • 后序遍历:从根结点开始,访问结点的孩子,然后是该结点。(D->E->B->C->A)
    • 层序遍历:从根节点开始,访问每一层的所有结点,一次一层。(A->B->C->D->E)
  • 二叉树--表达式树表达式树的及其内部结点包含着操作,且所有叶子也包含着操作数。对操作树的求值是从下往上的。
  • 二叉树--决策树(背部疼痛诊断器)决策树的结点表示决策点,其子结点表示在该决策点的可选项。决策树的叶结点表示可能的判断,这些推断是根据决策结果得出的。

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

  • 问题1:type作用?
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

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

  • 问题1:背部疼痛诊断器找不到文件。
  • 问题1解决方案:
    • 这是一个小错误,本来我还以为文件名字和文件添加位置不对。实际上,虽然我把txt文件和诊断器程序放在了一个文件夹里面,但是他还是不能直接通过名字进行查找。
    • 小组成员段志轩同学告诉我,用绝对地址就可以确保可以查找到文件。
    • 我走进了思维误区,以为txt文件的存放方式不对,而并没有考虑地址的问题。
  • 问题2:对于LinkedBinaryTree中的getRight()getLeft()方法,我一开始写了两种实现方法。但是在运行背痛诊断器的时候,有一种出现了类似无限递归的情况。
  • 问题2解决方案:XXXXXX
  • 问题3:背痛诊断器抛出异常
Exception in thread "main" java.lang.ClassCastException: week6.BinaryTreeNode cannot be cast to java.base/java.lang.String

无法转换成String类型。DecisionTree类中evaluate()方法中的System.out.println (current.getRootElement());报错。

  • 问题3解决方案:

    • 首先,我从根上查找错误,观察指针类的getRootElement()操作,运用的是泛型,应该是可以转为String型输出的。
    • 然后,考虑背痛诊断器的测试类和DecisionTree类有无问题。因为是书上代码,所以我又和书上的代码校对了一遍,代码没有错误。
    • 代码调试截图
    • 代码托管

      1

上周考试错题总结

上周无错题,优秀!

结对及互评

点评过的同学博客和代码

  • 上周博客互评情况

    • 学号1
    • 学号2

其他

这周的代码很复杂,不再是单单的一个类几个方法。对于代码的理解和实现上面还是有所不足的。对于背痛代码的错误,经过两三个小时的调试也没有找到根本原因。
对于上学期的迭代和递归知识也有所忘记,应该及时温习。对于代码要保持高度的紧张。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 610/610 1/2 20/30
第三周 593/1230 1/3 18/48
第四周 2011/3241 2/5 30/78
第五周 956/4197 1/6 22/100
第六周 2294/6491 2/6 20/120

参考资料

原文地址:https://www.cnblogs.com/gk0625/p/9853571.html

时间: 2024-08-02 20:28:28

20172301 《程序设计与数据结构》第六周学习总结的相关文章

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

20172301 <程序设计与数据结构>第一周学习总结 教材学习总结 第一章 软件的质量特征 正确性:软件能否有效处理问题 可靠性:软件发生故障的频率 健壮性:软件修复错误以及bug出现的频率 可用性:软件处理问题效率 可维护性:代码的整洁规范是否有利于维护 可重用性:使用已有的组件来减少开发工作量 可移植性:能在不同开发环境下能顺利运行 运行效率:提高软件运行效率,优化CPU时间和内存 数据结构 数据结构是计算机存储.组织数据的方式. 算法效率 算法效率是指算法执行的时间,算法执行时间需通过

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

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172314 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

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

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In

20172311 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172311 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本周对异常和递归进行了学习 异常的处理方式有两种:一种是直接抛出,并从异常处终止程序:另一种是捕获并处理异常,从而使程序继续运行. 捕获和处理异常主要运用try-catch语句. 通过继承Exception类可以自定义一个新的异常 处理IO异常的常用方法是抛出异常. 对于某些问题,递归是最精炼和适当的解法,但对于其他问题,递归则不如迭代方法直接. 教材学习中的问题和解决过程 问题:什么是IO操作

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

20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合可以分为两大类线性集合和非线性集合 线性集合:其元素按直线方式组织的集合. 非线性集合:其元素按某种非直线方式组织的集合.例如按层次结构或按网状结构. 3.1.1抽象数据类型 集合十一找给你隐藏了实现细节的抽象 数据类型:一组值及作用于这些数值上的各种操作. 抽象数据:类型(Absttract Data Ty

20172327 2018-2019-1 《程序设计与数据结构》第九周学习总结

20172327 2018-2019-1 <程序设计与数据结构>第九周学习总结 教材学习内容总结 第十五章 图 无向图 1.图的概念(非线性结构):允许树中每个结点与多个结点相连,不分父子结点. 2.图由顶点和边组成. 顶点由名字或标号来表示,如:A.B.C.D: 边由连接的定点对来表示,如:(A,B),(C,D),表示两顶点之间有一条边. 3.无向图:顶点之间无序连接. 如:边(A,B)意味着A与B之间的连接是双向的,与(B,A)的含义一样. 4.邻接(邻居):两个顶点之间有边连接. 5.自

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

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 图:图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的.与树的区别在于树中的一个结点只有一个前驱,也就是说只有一个父结点.但图中的顶点(结点)是没有这种限制关系的. 无向图:边为无需结点对的图.也就是说,现有两个顶点A.B.(A,B)与(B,A)效果相同.当两个顶点之间有边连接,也就是说这两个顶点是邻接的,也称作邻居.一个顶点

20172333 2018-2019-1 《程序设计与数据结构》第九周学习总结

20172333 2018-2019-1 <程序设计与数据结构>第九周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十五章-图 一.无向图 ①无向图的定义 图是由结点与结点相连接构成的,与树类似.这些结点被常常称作顶点(vertice),这些顶点的连接叫做边(edge). 无向图(undirected graph)是一种边为无序结点对的图. 两个顶点之间有一条连通边的顶点,我们称作它们为领接的(adjacent).这两个顶点也叫作邻居(neighbor),自己是自己的