二叉树的三种遍历例题带图
二叉树是常见的数据结构之一,它的操作涵盖广泛,其中遍历是其中最为基础和经典的部分。本文将从多个角度分析二叉树的三种遍历,并且提供例题和图示以便读者理解。同时,本文也将涉及遍历算法的实现和常见的应用场景。
一、前序遍历
前序遍历的顺序是:根节点->左子树->右子树。图示如下:

前序遍历的算法实现流程一般可以采用递归的方式,也可以使用栈来模拟递归,下面是前序遍历的伪代码:
```java
void preOrder(TreeNode root) {
if(root != null) {
visit(root);
preOrder(root.left);
preOrder(root.right);
}
}
```
其中的 `visit(root)` 函数表示访问节点的操作,可以是输出节点值,或是将节点加入到一个序列中等。
一般来说,前序遍历常用于生成一个二叉树的镜像,或是以某种方式对树进行深度优先搜索。
例题:给定一个二叉树,求其叶子节点的数量。
解题思路:对该树进行前序遍历,如果当前节点为叶子节点,则答案 `count` 加一。最后返回 `count`。
二、中序遍历
中序遍历的顺序是:左子树->根节点->右子树。图示如下:

中序遍历同样可以使用递归或栈模拟递归的方式来进行实现,下面是中序遍历的伪代码:
```java
void inOrder(TreeNode root) {
if(root != null) {
inOrder(root.left);
visit(root);
inOrder(root.right);
}
}
```
中序遍历的应用场景较多,例如当二叉树中的节点按照某种属性递增有序时,可以通过中序遍历来将二叉树排序输出。
例题:给定一个二叉树,输出其中序遍历序列。
解题思路:进行中序遍历,每次将节点的值输出到一个数组中,最后将该数组返回即可。
三、后序遍历
后序遍历的顺序是:左子树->右子树->根节点。图示如下:

后序遍历同样可以通过递归或栈模拟递归的方式进行实现,下面是后序遍历的伪代码:
```java
void postOrder(TreeNode root) {
if(root != null) {
postOrder(root.left);
postOrder(root.right);
visit(root);
}
}
```
后序遍历常用于计算二叉树的深度、计算二叉树中节点间的最大距离等问题。
例题:给定一个二叉树,求其深度。
解题思路:从上到下进行后序遍历,每当到达一个节点时,将其左右子树的深度取最大值加一,该节点的深度即为这个值。最后返回根节点的深度即可。
综上所述,本文分别介绍了二叉树的三种遍历方式及其实现方式,同时介绍了它们在实际场景中的应用。前序遍历、中序遍历和后序遍历都是基本操作,掌握这些基本知识可以为我们解决更为复杂的问题打下坚实的基础。