数据结构期末常见知识点
1 AOV网是一种有向无环图
2 所有的二叉树都满足度数为0的节点比度数为2的节点数多1,也都满足所有的度数*该度数节点的和等于总节点
数减1 只有完全二叉树满足当节点个数为奇数时,度数为1的点不存在,总节点个数吧 为偶数时,度数为1的节点数为
我们可以拓展到对所有的树,度数*该度数的结点数的和始终+1等于总结点数
3 无向完全图中共有n*(n-1)/2
条边 有向完全图中共有n*(n-1)
条边
4 稳定的排序有:插入排序,归并排序,冒泡排序
不稳定的有:选择排序,堆排序,快速排序,希尔排序,
5 对于一个任意的二叉树,节点数为n时,如果以链表形式存储,共有2n个链域,n+1个空链表,n-1个存放地址的
链域
6 树中节点的最大度数称为树的度
7 度数大于0的节点称为分支节点或非终端节点,叶节点也可称为终端节点。
8 树中两个节点的路径是由这两个结点之间所经过的节点序列构成的,路径长度是经过的边的个数,路径只能从祖
先指向后辈
9 度数为m,节点数为n的树最低有logm n*(m-1)+1;层高,由此可以推出高度为h,节点最少有h-1+m个
10 对二叉树进行先序遍历是进栈过程,中序遍历是出栈过程,确定一个另一个的可能数为卡特兰数
的先序遍历和中序遍历和他转化后的二叉树遍历结果相同
11 wpl是带权路径长度树的wpl是所有叶子节点的全职和路径长度乘积的总和
12 哈夫曼树永远是奇数个节点的二叉树
13 简单图为不存在重复边,不存在顶点到自身的边的图
14 回路不是简单路径,因为出现了重复顶点
15 dfs 和bfs可以判读有向图和无向图中是否有环 拓扑排序可以判断有向图中是否有环、
16 并非对任意非强连通图都需要两次以上的dfs或bfs才能完全遍历
17 采用邻接表存储的拓扑排序的时间复杂度为O(|V|+|E|) 采用邻接表存图的拓扑排序的时间复杂度为O(|V|)
18 若有向图的拓扑排序唯一,每个顶点的入度和出度并非最多为1,但入度为0和出度为0的顶点都仅有一个。
19 若用邻接矩阵存储有向图,矩阵主对角线以下的元素都为0,则该有向图一定无环
20 想要实现二分查找,满足表内存储元素有序且可以随机存取即可。
21 折半查找和二叉搜索树的效率有时不相同。
22 折半查找树是一颗平衡树,且无论是原树还是子树都满足右子树的深度比左子树大一或者这二者深度相等如果
我们计算mid是向上取整,则反过来,无论采用何种方式计算mid,这两种折半查找树都符合定义
森林的后序遍历和树的后序遍历等于对应二叉树的中序遍历结果。
23 对于平衡二叉树(AVL)而言,节点数为n时最高高度为 log(n+1)向上取整 +1;
最低高度为完全二叉树时的高度
高度为h时平衡二叉树需要的最少节点个数 nh =(nh-1)+(nh-2 )+1
当平衡二叉树的加点序列有序时,若节点的个数符合满二叉树的个数,则平衡二叉
树为满二叉树
24 对于二叉排序树,如果我们删除其叶节点再加入,树形不变,如果是非叶节点则
一定变
对于平衡二叉树,删除非叶节点或叶节点再加入,新的平衡二叉树可能和原来相同
也可能不同
25 开放定址法中的堆积是由于同义词和不同义词之间产生冲突导致的
26 在散列表进行比较查找时。比较失败时次数要加上与空位的那次比较
27 在进行冒泡排序时,如果初始序列为逆序,则需要执行n-1次排序
如果部分有序,则我们当排序完整后检测一趟发现没有元素进行交换时停止排序
28 在进行快速排序时,划分最均衡时比较次数最少
29 堆就是一颗完全二叉树
31 折半查找的搜索树最长路径长途为 log(n+1)向上取整
32 数据结构的四种数据类型 :线性结构,树状结构 集合结构,网状结构
集合结构关系是同属一个集合,线性结构为一对一,树状结构为一对多,网状结构为多对多。
33 数据结构包括数据的逻辑结构 、数据的存储结构 和数据的运算 这三个方面的内容。
34 数据的存储结构可以用四种基本的存储方式表示 分别是线性 链式 散列 索引
35 数据的运算最常用的有五种,分别是插入,删除,修改,查询,排序。
36 计算机算法指的是 解决问题的有限运算序列
37 计算机算法必须具备输入、输出,可行性、确定性和有穷性和 5个特性
38 线性表是n个数据元素的有序数列
39 顺序表中,插入一个元素所需移动的元素平均数是 n/2
40 线性表的逻辑结构是线性结构 ,其所含元素的个数称为线性表的 长度 。
41 时间复杂度不是衡量算法运行时间的唯一标准,并且与输入数据的关系有关。
42 长度为n的字符串的子串的数量为n*(n+1)/2+1 +1加的是空串,空串也是子串
43 满二叉树是所有非叶子节点都有两个子节点的二叉树
44 在队列中,允许插入的一端为队尾,允许删除的一端为队首
45 栈的表尾为栈顶,表头为栈底,修改按照先进后出,队列的修改按照先进先出
46 线索二叉树的左线索指向直接前驱,右线索指向直接后继
47 插入排序的工作原理是通过构建有序序列,对于未排序序列,在已排序序列中从后往前扫描,找到相应的位置
插入,在从后向前扫描过程中,反复把已排序元素逐步向后挪位,为最新元素提供空间
48 归并排序是利用分治思想,先将n给元素分成含n/2个元素的子序列,再递归的对两个子序列进行排序,最后将
排序完成的两个子序列合并得到排序结果。
49 kruskal在稀疏图更优秀prim在稠密图更优秀
50 AOE网络的关键路径是由最早发生时间等于最晚发生时间的事件及关联的活动构成的从源点到汇点的路径
51 在最小生成树算法中prim选用选点法,kruskal采用选边法
52 二叉排序树删除节点的常用方法有重接法和替换法
53 求等长编码对哈夫曼树的压缩比,先根据字符个数算出至少多长能表示所有字符,然后用该长度乘所有字符的权值和,最后用wpl除以该数乘百分之百即可
54 栈和队列的本质区别在于对运算的限制不同,即限定插入和删除的位置不同
55 对于所有的树,度数
56 数据表有序时,快速排序的事件复杂度是n方
57 在广义表中head()用于获得广义表中的第一个元素,tail可以获得广义表中除了head的其余元素,需要注意的
是对于(a,(c,d))我们先tail,获得的是(c,d);
58 在左右子树均非空的先序线索二叉树中,值为空的链域数为1 ,在求解这类问题时,我们首先要明白值为空的
链域只会在遍历顺序的第一个节点或者最后一个节点出现,如果第一个节点有左子树,则两个链域都不为空,如果
最后一个节点有右子树,则两个链域也都不为空。
59 从平均性能来讲快速排序最佳,在n较大时,归并排序最佳,但辅助空间较多
当基本有序时,使用冒泡排序,插入排序,选择排序最佳
60 因为逻辑结构可以由不同的存储结构实现,所以逻辑结构不依赖于存储结构
61 时间复杂度是指最坏情况下,估计算法执行时间的一个上界
62 排序对数据的存储方式无特殊要求,但不同的排序方法对排序有特殊要求
63 有向图用十字链表,无向图用邻接多重表
64 在顺序表中插入元素时要考虑在最后一位插入的情况,比如123就有四种情况
65 在询问用二叉链表即孩子兄弟表示法表示树或森林时,一定要分清表示的是树还是森林,树的话根节点没有有
孩子
66 引入线索化的目的是为了加快查找结点前驱或者后继的速度
67 对于稀疏矩阵,需要存储其每一个元素的元素值,其横纵坐标,还有整个矩阵的行数和列数还有元素总数
68 线性表要是选择链式存储,内存存储单元可连续可不连续,不过结点内的存储单元一定连续
69 广义表长度是广义表最外层括号内的元素个数
70 采用三元组表示稀疏矩阵时,三元组表中的元素个数与矩阵中的非零元素树相同
71 消除递归并不一定要用栈,对于循 环递归不需要栈
72 如果无向图每个顶点的度都大于等于2,则图中必有回路
73 空间复杂度要求的是辅助空间大小,o1空间复杂度说明辅助空间大小与n无关
74 一个算法应该具有输入,输出,有穷性,确定性,可行性五大要素,一个优秀的算法应该以可读性,健壮性,高效存储与低存储量(即高效性或者时间复杂度和
空间复杂度尽可能低),正确性
75 链式存储结构比顺序存储结构能更方便的表示各种逻辑结构
76 顺序存储结构和链式存储结构都可以进行顺序存取
77 队列在队头出队,在队尾入队,在用单链表实现队列时同样是末尾入队,队头出队,使用单循环链表来实现,入队出队时间复杂度都是o1
78 给定有n个元素的一个一位数组,建立一个有序单链表的最低时间复杂度为nlogn
79 在求删除线性表的一个元素后需要移动的次数时,要分顺序存储和链式存储两种方式来判断
80 对线性表进行顺序查找,如果线性表为顺序表,则查找失败的平均查找长度较小,不过查找成功的平均查找长度相同。
81 空树也是二叉树,空串也是子串
82 线索二叉树中,rtag=0或ltag=0表示该链域连的是子树,没有线索化
83 用二叉树存储森林时,其根节点的右指针不一定为空,因为单个树也可是一个森林
84 对有n个顶点e条边且使用邻接表存储的有向图进行广度优先搜索,算法时间复杂度为O(n+e);
85 求关键路径之所以可以求出是否存在回路是因为存在拓扑排序过程
86 采用平方探测法不容易产生冲突
87 稀疏矩阵的常见存储方式 三元组和十字链表