暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

学习笔记|数据结构与算法八股文背诵版-3

原创 zzh 2022-09-10
875

以下文章来源于后端技术小牛说 ,作者后端技术小牛说

简述图

图是由顶点集合和顶点之间的边集合组成的一种数据结构,分为有向图和无向图。

有向图:边具有方向性

无向图:边不具有方向性

简述邻接矩阵

用一个二维数组存放图顶点间关系的数据,这个二维数组称为邻接矩阵。对于无向图,邻接矩阵是对称矩阵

简述邻接表

邻接表是通过链表表示图连接关系的一种方。对于表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

简述图的深度优先搜索DFS

将图中每个顶点的访问标志设为 FALSE, 之后搜索图中每个顶点,如果未被访问,则以该顶点V0为起始点出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到。

简述图的广度优先搜索

从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和V0有路径相通的顶点都被访问到。

简述最小生成树和其对应的算法

对于有 n 个结点的原图,生成原图的极小连通子图,其包含原图中的所有 n 个结点,并且有保持图连通的最少的边。

普里姆算法:取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w。在添加的顶点 w 和已经在生成树上的顶点v 之间必定存在一条边,并且该边的权值在所有连通顶点 v 和 w 之间的边中取值最小。之后继续往生成树上添加顶点,直至生成树上含有 n-1 个顶点为止。

克鲁斯卡尔算法:先构造一个只含 n 个顶点的子图 SG,然后从权值最小的边开始,若它的添加不使 SG 中产生回路,则在 SG 上加上这条边,如此重复,直至加上 n-1 条边为止。

简述最短路径算法

Dijkstral算法为求解一个点到其余各点最小路径的方法,其算法为:

假设我们求解的是顶点v到其余各个点的最短距离。n次循环至n个顶点全部遍历:

从权值数组中找到权值最小的,标记该边端点k
打印该路径及权值
如果存在经过顶点k到顶点i的边比v->i的权值小
更新权值数组及对应路径

简述堆

堆是一种完全二叉树形式,其可分为最大值堆和最小值堆。

最大值堆:子节点均小于父节点,根节点是树中最大的节点。

最小值堆:子节点均大于父节点,根节点是树中最小的节点。

简述set

Set是一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

说一下对于树的理解

数据结构树是一种由有限节点组成的层次关系的集合。其特点如下:

  1. 每个节点有零个或多个子节点;
  2. 只有一个节点没有父节点,该节点称为根节点;
  3. 除根节点外,每个节点有且只有一个父节点;

简述二叉查找树

  1. 二叉查找树的左子树若不为空,则左子树上所有结点的值均小于它的根结点的值;
  2. 二叉查找树的右子树若不为空,则右子树上所有结点的值均大于它的根结点的值;
  3. 二叉查找树的左、右子树也分别为二叉查找树;
    没有键值相等的结点。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论