一.今天完成的主要事情
1.方案评审
首先是下午两点钟的时候后端小组对整个方案大概过了一遍,自己负责的模块并没有太多的问题
然后是下午六点的时候又针对其他成员的问题进行了一次沟通,解决了三个问题
最后是晚上八点准时开始的方案评审,自己负责的模块并没有什么问题
2.继续学习付老师的计算机理论基础课程
学习了数组,树,二叉树一节
数组,树,二叉树
一.数组的概念以及常见的操作
数组的概念
数组中的每个元素的类型都是相同的,这个类型可以是一个数字,字符,对象甚至其他的集合,比如一个数组中的每个元素都是数组的话,那这个数组就是二维数组.数组在内存中存储是连续存储的,所以数组的插入和删除性能比较低,因为每次操作之后都需要再开辟存储空间,并且还要对内存中的值进行赋值,增加开销.
数组是一个整体,确定之后各维度大小不能改变,每一个数据元素有唯一的一组下标来确定.
数组的常见操作
在数组中不考虑插入,删除数据的操作,一般只做取值和赋值,遍历操作.
二.树的基本概念和性质
树的概念
树型结构是一类重要的非线性结构,其节点有分支,而且具有层次结构.
树型结构的严谨定义
树的基本术语
.png)

线性结构和树型结构的相同点是第一个数据元素没有前驱,最后一个元素没有后继,不同点是数组中其他的元素都只有一个后继,而树型结构中的其他元素有多个后继
三.二叉树的链式存储和遍历
二叉树的定义
二叉树是由n个节点的有限集合构成,此集合或者为空集,或者由一个根节点及两颗互不相交的左右子树组成,并且左右子树都是二叉树.二叉树可以是空集合,根可以有空的左子树或空的右子树二叉树的存储结构
顺序存储要先把二叉树扩充为完全二叉树,然后再从树根,自上到下,每层自左到右的给所有节点编号,最后再按照编号把二叉树的数据元素存储到一组连续的存储单元中.
但这样有个问题,存储的时候会浪费很多的存储空间,因为先要把一个二叉树扩充为完全二叉树,需要加一些没有数据的空节点.多余的节点用于表示节点和节点之间的父子关系
除此之外,插入或者删除的时候会非常麻烦
二叉链表法,三叉链表法
二叉链表法是一个数据域保存当前节点的数据,两个指针域分别表示该节点左孩子和右孩子的地址,三叉链表法则又添加了一个父节点的地址.其中二叉链表法会更加常用一些.
遍历二叉树
其实就是将二叉树按照某种规律转变为线性关系排列出来. 有三种方式,先序(根)遍历,中序(根)遍历,后序(根)遍历
通过序列还原二叉树,只有通过先序和中序序列或者后序和中序序列才能还原出二叉树 先序和中序
中序和后序
四.二叉树的应用(二叉排序树,哈夫曼树)
二叉排序树的定义
二叉排序树的基本运算包括查找,插入,创建,遍历
查找操作,如果K=当前节点,返回,如果K<当前节点,在左子树中递归查找,如果K>当前节点,在右子树中递归查找 插入操作和查找操作息息相关,插入时先查找,如果树中不存在该节点,,则将新的节点插入到查找失败的位置,新节点成为一个新的叶子节点,所以新插入到节点一定是一个新添加的叶子节点.
对二叉排序树采用中序遍历,则获取的数据正好从小到大
对二叉排序树采用后序遍历,则获取的数据整好从大到小
哈夫曼树(最优树)
可以解决将学生的分数从百分制转变为五级制,提供性能最高的解决方式
哈夫曼树的应用,哈夫曼编码,构造一个哈夫曼树的过程,就获取到了一个哈夫曼编码,用于解决符合正态分布的问题,能够找到最优解.
二.明天计划完成的事情
和小组成员商量分配任务,然后尽快完成分配给自己的任务
三.遇到的问题
暂无
四.收获
以上
五,项目进度情况
如期进行,暂无延期风险
评论