This commit is contained in:
krahets
2023-08-21 19:32:37 +08:00
parent 02ac0aa9fe
commit fb9ace3a95
62 changed files with 291 additions and 254 deletions
+3 -5
View File
@@ -10,7 +10,7 @@ comments: true
## 7.2.1   层序遍历
「层序遍历 level-order traversal」从顶部到底部逐层遍历二叉树,并在每一层按照从左到右的顺序访问节点。
如下图所示,「层序遍历 level-order traversal」从顶部到底部逐层遍历二叉树,并在每一层按照从左到右的顺序访问节点。
层序遍历本质上属于「广度优先遍历 breadth-first traversal」,它体现了一种“一圈一圈向外扩展”的逐层遍历方式。
@@ -330,14 +330,12 @@ comments: true
相应地,前序、中序和后序遍历都属于「深度优先遍历 depth-first traversal」,它体现了一种“先走到尽头,再回溯继续”的遍历方式。
下图所示,左侧是深度优先遍历的示意图,右上方是对应的递归代码。深度优先遍历就像是绕着整个二叉树的外围“走”一圈,在这个过程中,在每个节点都会遇到三个位置,分别对应前序遍历、中序遍历和后序遍历。
下图展示了对二叉树进行深度优先遍历的工作原理。**深度优先遍历就像是绕着整个二叉树的外围“走”一圈**,在每个节点都会遇到三个位置,分别对应前序遍历、中序遍历和后序遍历。
![二叉搜索树的前、中、后序遍历](binary_tree_traversal.assets/binary_tree_dfs.png)
<p align="center"> 图:二叉搜索树的前、中、后序遍历 </p>
以下给出了实现代码,请配合上图理解深度优先遍历的递归过程。
=== "Java"
```java title="binary_tree_dfs.java"
@@ -755,7 +753,7 @@ comments: true
!!! note
我们也可以不使用递归,仅基于迭代实现前、中、后序遍历,有兴趣的同学可以自行研究
我们也可以不使用递归,仅基于迭代实现前、中、后序遍历,有兴趣的同学可以自行实现
下图展示了前序遍历二叉树的递归过程,其可分为“递”和“归”两个逆向的部分: