写出有向图和无向图的建立以及深度优先遍历和广度优先遍历的算法
时间: 2023-06-21 12:22:11 浏览: 129
有向图和无向图的建立:
有向图是由若干个顶点和有向边组成的,每条有向边指向另一个顶点。可以通过邻接表或邻接矩阵来表示有向图。
无向图是由若干个顶点和边组成的,每条边连接两个顶点。同样可以通过邻接表或邻接矩阵来表示无向图。
其中,邻接表是由一个数组和若干个链表组成,数组中每个元素表示一个顶点,链表中存储该顶点所连接的其他顶点;邻接矩阵是一个二维数组,其中行和列表示顶点,矩阵中的元素表示两个顶点之间是否有边。
深度优先遍历算法:
深度优先遍历算法(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。从起始顶点开始,沿着一条路径一直向下走直到不能再走为止,然后返回上一级顶点,直到遍历完整个图。
具体实现时,可以使用递归或栈来记录遍历顺序。以下是递归实现的伪代码:
```
DFS(vertex):
visited[vertex] = true
for neighbor in neighbors[vertex]:
if not visited[neighbor]:
DFS(neighbor)
```
广度优先遍历算法:
广度优先遍历算法(Breadth-First Search,BFS)同样用于遍历或搜索树或图,不同的是它先访问起始顶点的所有邻居,然后再访问邻居的邻居,以此类推,直到访问完整个图。
具体实现时,可以使用队列来记录遍历顺序。以下是队列实现的伪代码:
```
BFS(start):
queue = [start]
visited[start] = true
while queue is not empty:
vertex = queue.dequeue()
for neighbor in neighbors[vertex]:
if not visited[neighbor]:
visited[neighbor] = true
queue.enqueue(neighbor)
```
阅读全文