DFS 和 BFS 一般有递归和非递归的实现方式
- DFS 的思想是从上至下,对每一个分支一直往下一层遍历直到这个分支结束,然后返回上一层,对上一层的右子树这个分支继续深搜,直到一整棵树完全遍历,因此符合栈后进先出的特点
- 深度优先遍历常用的数据结构是栈
- DFS 特性 : 不全部保留结点,占用空间少;有回溯操作(即有入栈、出栈操作),运行速度慢。
- BFS 的思想是从左至右,对树的每一层所有结点依次遍历,当一层的结点遍历完全后,对下一层开始遍历,而下一层结点又恰好是上一层的子结点。因此符合队列先进先出的特点
- 深度优先遍历常用的数据结构为队列
- BFS 的特性 : 保留全部结点,占用空间大;无回溯操作(即无入栈、出栈操作),运行速度快。
查看 demo;
- 相关 leetcode 题
- https://leetcode-cn.com/problems/binary-tree-level-order-traversal/#/description
- https://leetcode-cn.com/problems/minimum-genetic-mutation/#/description
- https://leetcode-cn.com/problems/generate-parentheses/#/description
- https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/#/description
- https://leetcode-cn.com/problems/word-ladder/description/
- https://leetcode-cn.com/problems/word-ladder-ii/description/
- https://leetcode-cn.com/problems/number-of-islands/
- https://leetcode-cn.com/problems/minesweeper/description/