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

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

教材学习内容总结

1、树是非线性结构,其元素组织为一个层次结构

2、树的度表示树中的任意结点的最大子结点数
3、有m个元素的平衡n叉树的高度是lognm
4、树的遍历有4种方法
5、进行层序遍历时可采用队列来储存树中的元素
6、使用数组实现二叉树时,位于位置n的元素的左孩子在(2n+1)的位置,其右孩子在(2*(n+1))的位置
7、树的基于数组的存储链实现方式可以占数组中的连续位置,不管树是不是完全树
8、如何在一般二叉树中添加及删除元素,要取决于树的用途
9、使用决策树可以设计专家系统

二叉树


10、二叉查找树时一颗二叉树,对于其中的每个结点,左子树上的元素小于父结点的值,二右子树上的元素大于等于父结点的值
11、如果没有其他的操作,二叉查找树的树形由元素的添加次序来决定
12、最有效地二叉查找树时平衡的,所以每次比较时可以排除一半的元素
13、当从二叉查找树中删除元素时要考虑三种情形,其中的两种比较简单
14、当从二叉查找树中删除有两个子结点的结点时,比较好的办法是用它的中序后继来取代它
15、可以对二叉查找树进行旋转以恢复平衡

部分计算公式

16、二叉树上第i层上的结点数目最多为2^(i-1)(i>=1)
17、深度为k的二叉树至多有2^k-1个结点(i>=1)
18、包含n个结点的二叉树的高度至少为log2(n+1)
19、在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1.

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

  • 问题1:树的遍历
  • 问题1解决方案:
    1、先序遍历——先访问根,再自左向右遍历子树
    2、中序遍历——遍历左子树,然后访问根,然后自左向右遍历余下的各个子树
    3、后续遍历——自左向右遍历各个子树,然后访问根
    4、层序遍历——从树的顶层(根)打包底层,从左至右,访问树中每层的每个结点

    例题:

    先序遍历:A B D G C E F
    中序遍历:D G B A E C F
    后续遍历:G D B E F C A
  • 问题2:满二叉树和完全二叉树的区别
  • 问题2解决方案
    满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
    完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
    满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。

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

  • 问题1:在编写树的方法时,RemoveFirst方法一直报错
  • 问题1解决方案:在检查后发现是在ListADT时没有写进去导致出现了错误。

代码托管

上周考试错题总结

结对及互评

  • 基于评分标准,我给严域俊的博客打分:7分。得分情况如下:

正确使用Markdown语法(加1分)

模板中的要素齐全(加1分)

教材学习中的问题和解决过程, (加3分)

感想,体会真切的(加1分)

点评认真,能指出博客和代码中的问题的(加1分)

  • 博客中值得学习的或问题:

    • 图片和文字相结合,方便理解。
    • 增加了博客中的目录,方便查看,同时样式进行了更新,显得更加美观
    • 阅读了许多资料,使得博客更有说服力。
  • 代码中值得学习的或问题:
    - commit依旧很详细,有条理性。

点评过的同学博客和代码

  • 本周结对学习情况

    • 20172333
    • 结对学习内容
      教材第9章,运行教材上的代码
      完成课后自测题,并参考答案学习
      完成课后自测题,并参考答案学习
      完成程序设计项目:至少完成PP9.2、PP9.3

其他(感悟、思考等,可选)

这一周花了点心思在这一章上面,也好好阅读了很多内容,掌握的还算可以。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 700/700 1/2 10/20
第三周 700/1400 1/3 10/30
第四周 500/1900 2/5 10/40
第五周 569/2469 1/6 10/50
第六周 1070/3539 1/7 10/60

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

  • 计划学习时间:10小时
  • 实际学习时间:10小时

参考资料

原文地址:https://www.cnblogs.com/linanlalala/p/9844057.html

时间: 2024-11-03 18:54:41

20172330 2018-2019-1 《程序设计与数据结构》第六周学习总结的相关文章

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

20172330 2018-2019-1 <程序设计与数据结构>第二周学习总结 教材学习内容总结 集合 1.集合是一种对象,类似于保存其他对象的存储库 集合中的元素通常是按照他们添加到集合的顺序,或者是按元素之间的某种内在联系来组织的. 2.抽象数据类型(ADT)是由数据和在该数据上所实施的具体操作构成的集合. 3.栈是一种线性集合,元素按后进先出(LIFO)的方法进行处理,有push,pop,peek,isempty,size等常用操作 4.栈是用于计算后缀表达式的理想数据结构 5.Java

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

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

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

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

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

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

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

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

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

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

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

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

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

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

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

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

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

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