对于遍历来说,我们要实现这样一个遍历或者搜索的话,毫无疑问我们要保证的事情就是:
- 每个结点都要访问
- 每个结点仅访问一次
- 对于结点访问的顺序不定
- 深度优先:Depth First Search
- 广度优先:Breadth First Search
- 深度优先遍历(DFS) 深度优先遍历(深度优先搜索),它的整个遍历顺序毫无疑问根节点 1 永远最先开始的,接下来往那个分支走其实都一样的,我们简单起见就是从最左边开始走,那么它深度优先的话就会走到底。
- 广度优先遍历(BFS)
广度优先遍历它就不再是用递归也不再是用栈了,而是用所谓的队列。你可以把它想象成一个水滴,滴到1这个位置,然后它的水波纹一层一层一层扩散出去就行了。
- 两者对比: