深度优先遍历(DFS)和广度优先遍历(BFS)

2022-04-06  本文已影响0人  静守幸福

深度优先遍历

1 构造 是否遍历过数组
2 构造队列 添加未遍历过元素
3 取元素 遍历 添加未遍历元素进队列
4 全部遍历完

最后一个遍历的节点 就是最远距离

相当于 以第一个节点为根 构建树
第一次遍历 当前节点的所有节点
然后以这些节点为根 继续遍历这些节点的子节点
直到结束

如果重复了超过n次 队列仍然不空 就是有环

广度优先遍历

1构造 遍历数组 为遍历过的 标记 -1
2 选择一个未遍历过节点 找一个未遍历过的子节点
3 这个未遍历过的子节点的标记位 为父节点标记位值 +1
4 遍历完全部节点

遍历标记位数组 最大值 即为 距离该点的最远值

如果重复了超过n次 就是有环

上一篇 下一篇

猜你喜欢

热点阅读