![81a9a6adb0dfb73aa49ae608d1a7cb93.png](https://img-blog.csdnimg.cn/img_convert/81a9a6adb0dfb73aa49ae608d1a7cb93.png)
前言
今天和大家带来的是二叉树的常见面试题,前序,中序,后序,层次遍历,递归和非递归,这里用 C++ 代码实现。
二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。
前序遍历
若树为空,则空操作返回。否则,先访问根节点,然后前序遍历左子树,再前序遍历右子树。(根->左->右)。
![ba04a30fd47fff5362869e047bc4a17e.png](https://img-blog.csdnimg.cn/img_convert/ba04a30fd47fff5362869e047bc4a17e.png)
中序遍历
若树为空,则空操作返回。否则,从根节点开始(注意并不是先访问根节点),中序遍历根节点的左子树,然后是访问根节点,最后中序遍历根节点的右子树。(左->根->右)。
![5d3c39278189832432e3aeeb58ccd99d.png](https://img-blog.csdnimg.cn/img_convert/5d3c39278189832432e3aeeb58ccd99d.png)
后序遍历
若树为空,则空操作返回。否则,从左到右先叶子后节点的方式遍历访问左右子树,最后访问根节点。(左->右->根)。
![e0520e24a1ec0013a1ea2aade8808ec0.png](https://img-blog.csdnimg.cn/img_convert/e0520e24a1ec0013a1ea2aade8808ec0.png)
层次遍历
如图
![0253a658c2a6856692b9c17d8b8dd5e7.png](https://img-blog.csdnimg.cn/img_convert/0253a658c2a6856692b9c17d8b8dd5e7.png)
下面来介绍一下具体的代码实现。
1、二叉树的定义
struct
2、构造一棵二叉平衡树(递归+非递归)
//小于根节点的放在左子树,否则放在右子树 (递归)
3、递归实现二叉树树的遍历
//前序遍历:根节点-》左节点-》右节点
4、非递归实现二叉树的遍历
/*
5、层次遍历(广度优先搜索)二叉树
void
完整代码:
/*
运行效果:
![9604fc61353a623920b3012ee2547bfe.png](https://img-blog.csdnimg.cn/img_convert/9604fc61353a623920b3012ee2547bfe.png)
今天的知识点就到这里了,你学会了吗?
有问题,欢迎和我一起交流~
推荐阅读
![52349fd3e0aaca16af0fa56e3c641e00.png](https://img-blog.csdnimg.cn/img_convert/52349fd3e0aaca16af0fa56e3c641e00.png)
![cae9761ac75634609a4216e809e28be7.png](https://img-blog.csdnimg.cn/img_convert/cae9761ac75634609a4216e809e28be7.png)