回顾深度优先生成树

一 概述

在深度遍历的过程中,我们可以得到一棵遍历树,称为深度优先生成树(生成森林)。

二 深度优先生成树(生成森林)实例分析

如图:

  1. 我们从顶点A出发访问该图;
  2. 我们按深度优先搜索算法继续访问了顶点C,D,E。
  3. 然后访问顶点B,得到的深度优先生成森林如图:

注:邻接矩阵法的深度优先生成树唯一,邻接表法的不唯一。因为邻接表法在生成边表时,根据输入顺序的不同,它生成的边表也会不同。所以邻接表法的深度优先生成树不唯一,同理于广度优先生成树。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是深度优先算法和广度优先算法的介绍和演示: 深度优先算法(Depth First Search,DFS): 深度优先算法是一种用于遍历或搜索树或图的算法。它从根节点开始,沿着一条路径尽可能远地遍历每个节点,然后回溯到前一个节点,尝试另一条路径,直到所有节点都被访问为止。深度优先算法使用栈来实现,因此也称为“栈搜索”。 以下是一个使用深度优先算法遍历图的Python代码示例: ```python # 定义图的邻接表表示法 graph = { 'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': ['F'], 'F': [] } # 深度优先遍历函数 def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) print(start, end=' ') for next_node in graph[start]: if next_node not in visited: dfs(graph, next_node, visited) # 调用深度优先遍历函数 dfs(graph, 'A') ``` 输出结果为:A B D E F C 广度优先算法(Breadth First Search,BFS): 广度优先算法是一种用于遍历或搜索树或图的算法。它从根节点开始,逐层遍历每个节点,直到找到目标节点或遍历完整个图。广度优先算法使用队列来实现。 以下是一个使用广度优先算法遍历图的Python代码示例: ```python # 定义图的邻接表表示法 graph = { 'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': ['F'], 'F': [] } # 广度优先遍历函数 def bfs(graph, start): visited = set() queue = [start] visited.add(start) while queue: node = queue.pop(0) print(node, end=' ') for next_node in graph[node]: if next_node not in visited: visited.add(next_node) queue.append(next_node) # 调用广度优先遍历函数 bfs(graph, 'A') ``` 输出结果为:A B C D E F

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值