【数据结构】期末不挂科笔记
【数据结构】期末不挂科笔记
大纲去复习
简答题
1、哈夫曼树的构造、计算wpl
哈夫曼树的处理其实很简单,将所有的权值节点放入最小优先队列中,每次取队头的两个数出来,组成一棵树,这颗树就三个节点,头节点是两个子节点的权值和。然后将新形成的头节点放入原先的最小优先队列中,循环上述过程就成为了一颗哈夫曼树。
给出具体例子:
给出8个带有权值的节点
将这些节点放入最小优先队列中,选择最小的两个权值节点——2、3出队,同时算出这两个节点的和为5
- 将刚刚得到的5权值节点放入初始的最小优先队列中,并再次pop出两个最小的权值节点,这次选择5、6,计算出和为11
- 重复上述操作,我们发现现在的最小优先队列的值为[7, 10, 11, 19, 21, 32],而我们这次出队的两个节点7、10都不是已经构造号的二叉树里面的节点,所以需要另外开一颗二叉树,这个树就是 17、7、10(头、左、右)
- 现在的队列中[11, 17, 19 ,21, 32],选取11、17,计算出和为28,构建28、11、17的树
现在的队列是[28, 32, 40],选出28、32,计算出和为60,构建60、28、32
现在队列是[40, 60],就只剩两个了,和为100,构建100、40、60
到此哈夫曼树构建完毕。
至于计算wpl,其实也很简单
我们画出来的哈夫曼树是可以看到层数的,wpl的值就是
A1最开始的权值数据 × A1爬到顶的步数 + A2最开始的权值数据 × A2爬到顶的步数 … + An最开始的权值数据 × An爬到顶的步数
什么意思呢,我们拿上面的哈夫曼树举例子
红点标注的就是最初始的数据,乘的就是爬到顶部的步数,例如2这个权值节点,爬到100这个节点就要5步,所以乘5
2、哈希表、计算平均查找长度asl
哈希表也叫散列表
哈希表的构建方法书上右6种,重点就是直接定址
处理哈希冲突的方法也有几种:开放地址法(求余)
其中,对增量d右三种取法
- 线性探测再散列
- 平方探测再散列
- 随机探测再散列
线性探测就是每一次+1
平方探测就是每次+1平方、负的1平方、2平方、负的2平方、3平方、负的3平方…以此类推
链地址法:
asl就是
每层冲突的次数之和 / 冲突总次数
3、最短路径
最短路径就是Dij算法和佛洛依德算法,既然老师说佛洛依德不考,那就是Dij算法了,详情见我的另一篇博客
4、堆排序、建堆
堆排序我也写过博客
5、avl树,bst树(两者出现一个)
AVL 树是一种平衡二叉树。平衡二叉树递归定义如下:
- 左右子树的高度差小于等于 1。
- 其每一个子树均为平衡二叉树。
基于这一句话,我们就可以进行判断其一棵树是否为平衡二叉了。
bst树就是二叉搜索树,avl树不需要平衡的需求,只需要满足排序大小为(左 < 头 < 右)即可
avl和bst树是动态查找,相比静态查找,有插入和删除功能。
avl的左旋右旋操作这里就得自己看了,我这边一时半会说不清。
编程题
1、二叉树的叶子节点个数(递归)
这题就比期中考试多了个判断条件——叶子节点
int LeafNodeNum(StructNode Node) {if (Node == NULL) {return 0;}if (Node->left == NULL && Node->right == NULL) {return 1;}return LeafNodeNum(Node->left) + LeafNodeNum(Node->right);
}
2、折半查找(二分查找)
这题目也不知道具体形式是啥
折半查找的前提是有序
关键判断条件
if (mid < search) {left = mid + 1;
}
else if (mid > search) {right = mid - 1;
}else {return mid;
}
填空、选择
1、排序的时间复杂度(最好、最坏、平均)
选择排序最好的情况也需要O(n^2)
快速排序最坏情况就是倒序情况,退化成冒泡排序,时间复杂度为O(n^2)
快速排序的空间复杂度为O(logn),这是辅助栈的空间
归并排序的空间复杂度为O(n),这是辅助数组的空间
2、基数排序
基数排序的特点:从个位开始,次位优先
3、队列、栈,判断空与满
队头:front
队尾:rear
队列最大大小:M(maxsize)
循环队列空:(rear + 1) % M != front
循环队列满:(rear + 1) % M = front
循环队列长度:(front - rear + M) % M
栈顶:top
栈底:base
栈空:top = base
栈满:top - base >= stacksize
4、二叉树的性质
二叉树的三种遍历得会吧
二叉树有以下几个性质:TODO(上标和下标)
性质1:二叉树第i层上的结点数目最多为 2^{i-1} (i≥1)。
性质2:深度为k的二叉树至多有(2^{k})-1个结点(k≥1)。
性质3:包含n个结点的二叉树的高度至少为log2 (n+1)。
性质4:在任意一棵二叉树中,若叶子结点的个数为n0,度为2的结点数为n2,则n0=n2+1
5、图的性质
带权的图得会吧
6、kmp算法
O(m+n)
7、构建二叉树
中序遍历 + x遍历
通过两个遍历来构建二叉树得会吧
8、最小生成树
k算法和p算法的基本得会吧
详情见我的另一篇博客
【数据结构】期末不挂科笔记相关推荐
- 【离散数学】期末不挂科复习笔记
[离散数学]期末不挂科复习笔记 和蜂考学的,重要的应该是逻辑和函数这两大板块,图和树就与数据结构挂钩了(大部分都是之前学过的),重点看看各种逻辑的等值演算还有推理! 第一章(命题逻辑的基本概念) 1. ...
- 【大学物理】期末不挂科复习笔记
[大学物理]期末不挂科复习笔记 猴博士yyds 打了*号的是重点 高斯定理 1.求通过某个面的电通量 *2.用高斯定理求场强 面电荷密度 x 面积 = 电荷量 注意: 有体积的物体需要分:体内和体外 ...
- 大学期末不挂科速成课-史上最全
每到期末肯定有不少小伙伴烦恼趴 今天他来了-史上最全大学期末不挂科速成课 以下链接是合集合集!!单科可以私聊小编喔!! https://download.csdn.net/download/qq_52 ...
- c++ 图的连通分量是什么_【自考】数据结构第五章图,期末不挂科指南,第9篇
图的基本概念 首先,你要明确图是什么样子的,就是下面这个样子的 图的定义与术语 有向图和无向图 直接对比图就可以看出来,有向图和无向图的区别了,这个没有什么难的. 有向图和无向图的表示法有略微的区别, ...
- 只用半小时,只用半小时,只用半小时,给自己一个机会,看完保你web开发一期末不挂科,老师看了都说好
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站.点击这里 来还愿啦 Web开发(一)·期末不挂之第一章·Web开发基础(不背就挂的基础知识) Web开 ...
- C++ 1 之 冲刺期末不挂科的入门
C++ 入门 先来几句废话 前言 什么是C++ C++发展 C++的重要性 如何学习C++ C++关键字 来一个Hello World!!! 命名空间 定义一个普通的命名空间 命名空间可以嵌套使用 命 ...
- 史上最全面的《软件工程》笔记—— 期末不挂科就看这一篇
软件工程: 软件工程是: (1)将系统化的.规范化.可量化的方法应用于软件的开发.运行和维护,即将工程化方法应用于软件. (2)在(1)中所述方法的研究 软件和硬件的区别? 1.软件是设计开发的,而不 ...
- 数据结构基础知识点,看完保证期末不挂科!
数据结构基础知识 线性结构 (1)连续储存(地址在内存中为连续)-----数组 (2)离散储存(地址在内存中不一定为连续的)-----链表 非线性结构 (1)树 (2)图 基础算法(查找排序): 折半 ...
- map的key可以试一个数组吗?_【自考】数据结构第三章,数组,期末不挂科指南,第5篇...
数组 概念如下 数组可以看成线性表的一种推广,其实就是一种线性表,一维数组又称为向量 数据由一组具有相同类型的数据元素组成,并存储在一组连续的存储单元中 若一维数组中的数据元素又是一维数组结构,则 ...
最新文章
- EF修改对象里面的值。。。(对象字段多的时候)
- NUS 联合 Sea AI Lab 发表 Multi-view Pose Transformer,完全端到端学习,超强可扩展性...
- pytorch学习笔记(2):在MNIST上实现一个CNN
- Linux中Docker的介绍、安装与卸载
- 80年代的我们对儿时零食的回忆
- PSP3000终于可以放心的关机了!
- PMP考试题型是如何分布的?
- 高分辨率:遥感卫星影像
- 最新无广告扒小马客服系统多种商户接入客服等!目前最好的客服系统 跟洽美站仿站网站源码
- 开源项目_springboot的答题系统+spark大数据实时分析
- const注意点(对象赋值)
- 一个屌丝程序猿的人生(五十)
- Hui-iconfont字符图标不显示或显示异常。
- bat文件ping服务器,Windows下Ping一段IP地址的BAT
- PPT进行简单宣传册(三折页)制作、展板设计与背景装饰添加---幻灯片大小调整、背景格式设置
- 蓝桥杯——java(b组)省赛
- Mac提示mysql不是_mysql插入汉字报错。不是mysql是安装在mac系统里的
- 第四章Java核心类库_多线程
- C++ 调用 .lib 文件中的函数
- MUI、HTML5+、HBuilder实现透明渐变导航栏+自定义按钮(右上角分享按钮)