20172301 《程序设计与数据结构》第六周学习总结
Posted gk0625
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
- 首先,我从根上查找错误,观察指针类的
上周考试错题总结
上周无错题,优秀!
结对及互评
点评过的同学博客和代码
其他
这周的代码很复杂,不再是单单的一个类几个方法。对于代码的理解和实现上面还是有所不足的。对于背痛代码的错误,经过两三个小时的调试也没有找到根本原因。
对于上学期的迭代和递归知识也有所忘记,应该及时温习。对于代码要保持高度的紧张。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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 |
参考资料
以上是关于20172301 《程序设计与数据结构》第六周学习总结的主要内容,如果未能解决你的问题,请参考以下文章