数据结构考前总结

1.算法分析

1.O(N)是上界,Ω(N)为下界,Θ(N)为常数倍

2.注意循环的条件,以及N^2还是NN,还是N2

2.列表

1.链表中的二分法复杂度大于O(NlogN)

2.sequentially stored linear list这个是顺序存储的线性表,就是和数组差不多,不是链表。链表:linked list

3.栈和队列

1.prefix和infix和postfix是树的三种遍历方式,变量在叶子结点,而运算符号在非叶子结点。

index->postfix:遇到字母直接输出,遇到符号:要求栈顶的优先级是最高的,如果不能满足,就出栈,直到满足为止。然后该符号入栈。

括号的优先级栈外最高,栈内最低。遇到右括号,出栈直到左括号

2.问不可能的弹出序列,问栈至少多大,都模拟一下栈即可。注意出栈以后可以在该元素的旁边写数字表示入栈,不是在上方。

3.Circle queue:出入队列操作以后,有可能出现尾节点小于头节点的情况。但是它们之间的差不会大于n。尾节点其实是n+尾节点的位置。因此计算个数的时候就加回去。

Circle queque最多可以容纳的元素是数组的大小-1个元素。

4.树

1.树的深度优先遍历:

a.将当前结点的左结点压入栈,直到没有左节点。

b.弹出一个点,将这个点的右节点压入栈,

c.重复b直到遍历完成

2.树的广度优先遍历:

a.当前结点所有孩子入队列。

b.弹出一个,将孩子入队列,直到队列空

3.有关树的计算:已知degree为1,2的点有几个这种,需要用公式: ∑ d e g r e e = 2 e \sum degree=2e degree=2e,但是degree定义不同,需要+1,求和后需要-1,因为根节点没有父节点。

如果有两个degree的点个数不知道,直接当作0就可以。必须能够约掉,否则算不出来。

5.搜索树

1.有关二叉树的便利:T(N)=2T(N/2)+1,解一下是O(N)

2.二叉树后序遍历:必须最后一个是根,前面必须有一个序列完全小于根,后面一个序列完全大于根。然后再在子序列里找。

3.已知BST节点个数,求孩子个数:节点为 1 + 2 + 2 2 + . . . 2 k + m = 2 k + 1 − 1 + m = n 1+2+2^2+...2^k+m=2^{k+1}-1+m=n 1+2+22+...2k+m=2k+11+m=n

m是最下面一层的孩子。最下面一层的孩子的的一半+完整的k阶二叉树的孩子个数就是总孩子个数。

4.二叉树最方便的方法就是画一个特例验证

5.二叉搜索树不一定是完全的,因此和二分查找是不一样的。二分查找相当于在完全二叉树里找

6.二叉搜索的时间复杂度为:T(N)=T(N/2)+1,如果不是二分,则是N/K,但是复杂度还是O(NlogN)

7.二叉树7,9同级,则8一定共同的祖先,但是不一定是共同的父结点。

因为7,9可以是分支,这样父节点只需要一个根小于9,一个根大于7,但是不管怎么样,一定有一个点把7,9分开,就是8
0

6.堆

1.建堆是从低N/2个元素开始,一个一个往前走,每个执行precdown。precdown是指将该结点和最小的孩子比较,如果大于最小的孩子,则交换,直到小于所有的孩子。

2.建堆最大比较2N-2次

7.并查集

8.图和拓扑排序

1. ∑ d e g r e e = 2 e \sum degree=2e degree=2e是对所有的图都成立,和是否联通没有关系

2.优先考虑是否是联通的。比如成环的一定是强联通,但是不联通的就错。如果边的度数为偶,但是没说是联通图,则不是欧拉图

9.最短路径

1.找一下特殊的情况,比如3个点的情况

2.最小生成树唯一的条件为:权值相同的必须都添加(不能构成环)

10.网络流

11.DFS

12.排序

1.排序复杂度:

归并:归并:O(N),总复杂度:O(NlogN)

快排:平均和一般情况:O(BNlogN),最坏O(N^2)

堆排:O(NlogN)

插入:O(N^2)

桶排:O(N+M),M为桶数

所有排序最坏情况必须为O(N)

2.Heap和quick不用额外空间,Merge需要O(N)空间

13.哈希表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值