熊哥保佑你 数据结构复习

构造哈夫曼树:

先带权值最小的,再找有关系的(一般是相等或相近),没关系的放一边,最后将有关系的和没关系的组成一个哈夫曼树。

.

最小生成树:

顶点数:n
边数:n-1
kruskal:找最小边
prim:从一个点出发,根据点的集合找最小边

.
深度、高度不包括叶子节点
区别:
深度指的是从根节点到某个节点的路径长度,而高度指的是从某个节点到最远叶子节点的路径长度。

相关例题:
一个高度为5的3阶B树还有的关键字个数至少是:
2**5-1=31

.
小根堆:每个小三角形内都是三数最小的当根
大根堆:每个小三角形内都是三数最大的当根

调整过程都是自底向上进行的。

.

平衡二叉树:

计算时左减右

  1. LL型:
    在这里插入图片描述
  2. RR型:

    下面C换成D
  3. LR型:
    在这里插入图片描述
    E、F互换
  4. RL型:
    在这里插入图片描述
    左边的E应该是B

.
对 m 个初始归并段进行 k -路平衡归并:
(读的次数+写的次数)*趟数+内部排序(读的次数+写的次数)

趟数= log 以 k 为底 m 的对数,进行向上取整

为实现最佳归并,需要补充的虚段(长度为 0 的初始归并段)个数:
公式:( m - 1 )%( k - 1 )
当公式的值为 0 时,不用补
当公式的值不为 0 时,需要补充的虚段个数为:k -公式- 1

读写外存次数最少的归并方案:
在初始归并段最开头添加需要补充的虚段个数个 0 ,形成哈夫曼树,
此时的哈夫曼树是 k 叉树。
此时读写外存次数:哈夫曼树的带权值 * 2

.
Dijkstra:按点的集合找最小边形成最短路径
Prim:直接找最小边,按边找最短路径

.

线索二叉树:

在这里插入图片描述
先按画图法或三角形法列出遍历序列,必须挨着才能连线。

.
对一个树来说:出度 = 入度
总结点个数 = 入度个数 + 1(根无入度)

一个度为 n 的树中,每个结点最多可以有 n 个子结点。

.
拓扑序列:每次找没有入度的点

.

快速排序:

  1. 第一趟:先在最右侧设一个哨兵,在最左侧设置 Left,在除哨兵之外最右侧设置 Right。Left 找大于哨兵的数,找到之后不动,等待 Right 找小于哨兵的数,找到后两数交换。当 Left 和 Right 重合时,判断 Left 和 Right 指向的数和哨兵的大小关系,进而判断是否要交换两数。
  2. 第二趟:在中间位置设哨兵,重复上述操作。(左半部分)
  3. 第三趟:(右半部分)
  4. 继续上述操作,直到排序完成

.

循环队列:

  • front = rear 时,队列为空或队满
  • 循环队列 A [0] 不一定是第一个元素所在位置,同样,front 和 rear 的位置是不固定的,不一定指向 A [0]
  • 添加元素后,rear 指针向后移动;添加元素前,rear 在上一个位置。
    在这里插入图片描述

.

哈希表处理冲突的方式:

都是哈希法存数:

  1. 线性探测
    在这里插入图片描述
  2. 二次探测
    在这里插入图片描述
  3. 链接法
    在这里插入图片描述

.

稀疏矩阵:

  1. 三元组线性表:(所有非零元素的( 行,列,值 ))
  2. 十字链表
    在这里插入图片描述

.

广义表:

在这里插入图片描述
表头是第一个元素
表尾是除第一个元素之外的其他所有元素

.

关键路径:

  1. 最早开始时间 = 最晚开始时间的结点连起来 且 权值相加 = 正推结束后的值
  2. 最早开始时间 = Max( n1,n2) 正推
  3. 最晚开始时间 = Min( n1,n2 ) 逆推
  4. 起点和终点最早开始时间 = 最晚开始时间
  5. 起点为( 0,0 )终点为为正推结束后的值

例子:
在这里插入图片描述

.

深度优先和广度优先生成树:

深度优先:
案例:
在这里插入图片描述
广度优先:

  • 类似层次遍历
  • 任何结点都可以成为顶点,与顶点相连的是第二层,同理依次向下
    案例:
    在这里插入图片描述

.

二分查找:

公式:mid =( low + high )/ 2

例题:
一个长度为 n 的有序表,若采用二分查找一个不存在的元素,则比较次数最多是?
公式:log 以 2 为底 n 的对数向下取整 + 1

.

前缀、中缀、后缀表达式:

相互转化:
前缀、中缀、后缀之间的相互转化都用到栈这一数据结构
在这里插入图片描述
前缀转中缀:
案例:
在这里插入图片描述
中缀求前缀:
案例:
在这里插入图片描述
中缀求后缀:
案例:
在这里插入图片描述
后缀转中缀:
案例:
在这里插入图片描述

.

时间复杂度:

递归的空间复杂度为 O( n )
尾递归的空间复杂度为 O( 1 )

尾递归:

  1. 递归函数的最后一步操作是调用函数本身。
  2. 递归调用的结果不参与任何的后续操作,而是直接返回

.

排序算法时间、空间复杂度:

在这里插入图片描述

.

B - 树的插入:

B - 树类似一个结点可以容纳多个数的多叉树
B - 树中除根之外的所有非终端结点中的关键字个数必须大于等于 m / 2 的上取整 - 1,不超过 m - 1
m:阶数
在这里插入图片描述

.

B - 树的删除:

  1. 若该结点为最下层的非终端结点,由于其指针均为空,删除后不会影响其他结点,可直接删除
  2. 若该结点不是最下层的非终端结点,邻近的指针则指向一棵子树,不可直接删除

猜你喜欢

转载自blog.csdn.net/m0_64799907/article/details/131342544