![e4b66f62025f66f97bdd3a5a915d2404.png](https://img-blog.csdnimg.cn/img_convert/e4b66f62025f66f97bdd3a5a915d2404.png)
概述
二叉树的遍历是一个很常见的问题。二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实指的是父节点被访问的次序。若在遍历过程中,父节点先于它的子节点被访问,就是先序遍历;父节点被访问的次序位于左右孩子节点之间,就是中序遍历;访问完左右孩子节点之后再访问父节点,就是后序遍历。不论是先序遍历、中序遍历还是后序遍历,左右孩子节点的相对访问次序是不变的,总是先访问左孩子节点,再访问右孩子节点。而层次遍历,就是按照从上到下、从左向右的顺序访问二叉树的每个节点。
![2bbbd29c7cec27472e7b39daef85b490.png](https://img-blog.csdnimg.cn/img_convert/2bbbd29c7cec27472e7b39daef85b490.png)
![d2880edac371047fefa529eb2f78b832.png](https://img-blog.csdnimg.cn/img_convert/d2880edac371047fefa529eb2f78b832.png)
在介绍遍历算法之前,先定义一个二叉树的结构体。使用的是 C++ 语言。
//filename: BinTreeNode.h
先序遍历
递归
使用递归,很容易写出一个遍历算法。代码如下:
//filename: BinTreeNode.h
迭代
在之前的文章中,我不止一次地说过,递归是很耗费计算机资源的,所以我们在写程序的时候要尽量避免使用递归。幸运的是,绝大部分递归的代码都有相应