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

广度优先遍历BFS

图的广度优先遍历(BFS)和深度优先遍历(DFS)_第1张图片
使用队列
先放入A
然后拿出A 把他的邻接点 B C放进队列
把先进入的B的邻接点塞入队列 D
队列 B C D
再放入C的邻接点 E
队列 B C D E
然后放D的 D不存在
放E的 F
队列 B C D E F
这样就这样保证出队的顺序符合bfs的规律(下次放入邻接的节点也和前面放入的顺序相同 放的B C下面先放的一定是B的邻接 D 再放入C的邻接E)
然后出队列
得到 A B C D E F

深度优先遍历DFS

图的广度优先遍历(BFS)和深度优先遍历(DFS)_第2张图片
一直走 走到无路可走 调回前一个点 看看有哪个点没走过
A B D F E C
使用栈
A 放入栈
拿出 A
放入邻接点 C B
栈 C B
出栈拿出B A B
栈 C
放入B的邻节点 D
栈 C D
出栈拿出D A B D
栈 C
放入D的邻节点 E F
栈 C E F
出栈拿出F A B D F
栈 C E
F没有邻接点
出栈拿出E A B D F E
栈 C
出栈拿出C A B D F E C
完成遍历

你可能感兴趣的:(算法加数据结构,队列,dfs,bfs,二叉树,图论)