18、上午题——数据结构(上)上下一共5分

大O表示法及时间空间复杂度 

空间复杂度是看新开了多少空间,假如它本身有一个数组,但是我在这个过程中只新开了一个变量,那么空间复杂度是O(1) 

渐近符号 

O表示要大于等于它本身的复杂度,Ω表示要小于等于它本身的复杂度,第三个表示只能等于它本身的复杂度

递归式时间空间复杂度

解释一下这里为什么空间复杂度是O(n),因为这里的定义变量在递归里,循环了n次

这里左上角的是那个什么公式,感觉有点难记,而且都好久没考了,我赌它不考 

线性结构和线性关系 

线性表的顺序存储

顺序表插入时间复杂度:

顺序表删除时间复杂度:

顺序表查找时间复杂度:

线性表的链式存储 

单链表插入时间复杂度:

单链表删除时间复杂度:

 单链表查找时间复杂度:

循环单链表

双链表

栈 

 队列

两个栈可以模拟队列,两个队列不能模拟栈 

串 

可以采用特例法算答案,也可以找规律 (首项+末项)*长度/2

串的模式匹配与朴素模式匹配

手算next数组值及KMP

感觉应该不会考这个,可以了解一下

很好理解很好算,上手做几个就知道了

数组

如果实在不会的话也可以找特例代进去试试看 

对称矩阵

三对角矩阵

只有主对角线及其两边有数据,其余都是0

三对角矩阵的存放方式如下图:(其实就是按行横着下去的)

稀疏矩阵 

三元组顺序表和十字链表是对稀疏矩阵进行压缩存储的方式 

可以背公式也可以直接找特例代进去算答案 

对于下面这个题,注意这个坑 i<=j 

背一下下面这个知识点 

树的性质1:树中的节点总数=树中所有节点的度数之和+1

树的性质2: 度为m的树中第i层上最多有m^(i-1)个节点(i>=1)

树的性质3:高度为h的m次树最多有(m^h-1)/m-1个节点

树的性质4:具有n个节点、度为m的树的最小高度为

可以根据性质算,也可以根据所给条件画一个树出来 

 

特例法yyds 

二叉树

满二叉树即每层都是满的

完全二叉树是从上到下,从左到右依次放

如下图中的c激素因为3的左孩子为空,故不是完全二叉树

下面采用的是卡特兰数计算方法计算出来的结果

我通过画图也可以画出来所有结果 

二叉树的存储结构 

关于下面这题第二问怎么来的呢,其实很好做,因为1没有父节点,空指针1个;2没有左右孩子,空指针2个;3没有左孩子,空指针1个;14没有左右孩子,空指针2个;15没有左右孩子,空指针2个,加起来一共8个空指针 

下面这个也很好做,其实就是算缺多少个左右孩子 

二叉树的遍历 

先序遍历:根左右

中序遍历:左根右

后序遍历:左右根

层次遍历:从上到下,从左到右依次遍历

平衡二叉树

平衡二叉树:二叉树中任意一个节点的左右子树高度之差的绝对值不超过1

完全二叉树也是平衡二叉树

二叉排序树

二叉排序树(二叉查找树,也叫二叉检索树):根节点的关键字大于左子树所有节点的关键字,小于右子树所有节点的关键字,且左右子树也是二叉排序树(中序遍历得到的序列是有序序列)

二叉排序树例图:

关于二叉排序树的构建,就是比当前关键字大的就放右边,小就放左边,依次比就行 

最优二叉树

最优二叉树(哈夫曼树):带权路径长度最短的树

哈夫曼树的构造:每次取两个权值最小的节点

哈夫曼编码:左0右1

哈夫曼压缩比:

第一步:求等长编码:2的多少次方>=字符数,求出x,如何拿x乘以频率和即为等长编码

第二步:求哈夫曼编码,构造出哈夫曼树,然后求哈夫曼编码即可

第三步:算压缩比:压缩比=(等长编码-哈夫曼编码)/等长编码

对于下面这个题,特例法:n取1就得到答案了 

对于下面这个题:

等长编码=300

哈夫曼编码=136

算出压缩比=21%

线索二叉树

了解即可,一般是作为干扰选项出现

对于下面这个题: 

 

图 

完全图:每个顶点都与其他所有顶点相连

        n个顶点的无向完全图共有n(n-1)/2个边

        n个顶点的有向完全图共有n(n-1)个边

对图来说,顶点的度=入度+出度总度数=2*边数

连通图:在无向图中,如果任意两个顶点都是连通的(可以是间接连通,比如说a、e联通可以说a到c再到e),则称为连通图。假如n个顶点,最少有n-1条边,最多有n(n-1)/2条边

强连通图:在有向图中,如果任意两个顶点之间都有来回路径,则为强连通图。假如n个顶点,最少有n条边,最多有n(n-1)条边

邻接矩阵和邻接表

稠密图和稀疏图 

稠密图边多,用邻接矩阵

稀疏图边少,用邻接表

了解一下就行,只出过一次

 图的遍历

深度优先搜索和广度优先搜索的时间复杂度相同:

邻接矩阵存储时,时间复杂度为O(n^2)

邻接表存储时,时间复杂度为O(n+e)

拓扑排序 

有向无环图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值