利用邻接表创建图并深度优先遍历
时间: 2024-03-25 16:38:15 浏览: 54
建立图的邻接矩阵或邻接表存储并在此基础上实现图的深度优先遍历和广度优先遍历.doc
5星 · 资源好评率100%
好的,我来给你展示一下如何利用邻接表来创建一个图,并进行深度优先遍历。
首先,我们需要定义一个类来表示图中的每个节点和它与其他节点的连接关系,可以定义如下:
```python
class Node:
def __init__(self, value):
self.value = value
self.neighbors = []
```
其中,`value`表示节点的值,`neighbors`表示与该节点相邻的其他节点。
接下来,我们可以利用邻接表来构建一个有向图,例如:
```python
# 创建节点
nodeA = Node('A')
nodeB = Node('B')
nodeC = Node('C')
nodeD = Node('D')
nodeE = Node('E')
nodeF = Node('F')
# 建立连接关系
nodeA.neighbors.append(nodeB)
nodeA.neighbors.append(nodeD)
nodeB.neighbors.append(nodeC)
nodeD.neighbors.append(nodeE)
nodeE.neighbors.append(nodeF)
```
这个有向图的结构如下:
```
A -> B -> C
| ^
v |
D -> E -> F
```
最后,我们可以通过递归实现深度优先遍历:
```python
def dfs(node, visited):
# 标记当前节点为已访问
visited.add(node)
print(node.value, end=' ')
# 遍历当前节点的相邻节点
for neighbor in node.neighbors:
if neighbor not in visited:
dfs(neighbor, visited)
```
我们可以从任意一个节点开始进行深度优先遍历,例如从节点A开始:
```python
visited = set()
dfs(nodeA, visited) # 输出:A B C D E F
```
这样就完成了利用邻接表创建图并进行深度优先遍历的过程。
阅读全文