先序遍历:
中序遍历:
![](https://i-blog.csdnimg.cn/blog_migrate/dfffdf482260dcbcac125c143c065c80.png)
后序遍历:
![](https://i-blog.csdnimg.cn/blog_migrate/f71a94ed55d26d36f296f32d10934c8f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9d67be0e982abe341e706647a626d67d.png)
我们上面的先序遍历、中序遍历、后序遍历建立的基础都是递归。
是在递归的基础上面我们根据递归的一些原理,一些规则,我们知道是这样的一个执行过程,世实际上递归的实现是用堆栈完成的。
后面我们会学习,怎么借助堆栈把递归变成非递归。
二叉树的中序遍历非递归遍历算法:
![](https://i-blog.csdnimg.cn/blog_migrate/6c68ad5ff052ebc0105d3400eeb22a97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/20486059e1896a4148b380ffe38f0eb4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ef08073b9b9b3817b324b761fb7a41c.png)
二叉树的先序遍历非递归遍历算法:
![](https://i-blog.csdnimg.cn/blog_migrate/b4c84a29e6d000bd8bc6c57d1858607a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88352876f939c5a8b3eb4251ec4c45ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5c8a7e8308550d562e3adef73a763.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bf693809ba2f88faf4c17dd3409cc619.png)
层次遍历:
![](https://i-blog.csdnimg.cn/blog_migrate/83fa9c3af2b61931e5746ef4c93c2141.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c414039896741fc8d34301c12d3e42d3.png)
实现步骤:
先把A放入队列,然后之后就开始做循环了,此时队列中元素:A
1、取出第一个元素A,放入它的左右孩子结点:B、C,此时队列中元素:B、C
2、取出第一个元素B,放入它的左右孩子结点:D、F,此时队列中元素:C、D、F
3、取出第一个元素C,放入它的左右孩子结点:G、I,此时队列中元素:D、F 、G、I
4、取出第一个元素D,放入它的左右孩子结点:无,此时队列中元素:F 、G、I
5、取出第一个元素F,放入它的左右孩子结点:E,此时队列中元素:G、I、E
6、取出第一个元素G,放入它的左右孩子结点:H,此时队列中元素:I、E、H
7、取出第一个元素I,放入它的左右孩子结点:无,此时队列中元素:E、H
8、取出第一个元素E,放入它的左右孩子结点:无,此时队列中元素:H
9、取出第一个元素H,放入它的左右孩子结点:无,此时队列中元素:无
按照输出的顺序:ABCDFGIEH,就是我们得到的层次遍历的结果。
![](https://i-blog.csdnimg.cn/blog_migrate/88bd30b0da6908ffd7adec0dbaf17a74.png)
思考:
![](https://i-blog.csdnimg.cn/blog_migrate/b12f982b37dd41c5f36916e33c9b1d36.png)
不能用前面同样的结构进行对比处理。
可以利用两个堆栈和一个指针进行处理。
遍历二叉树的应用:输出二叉树中的叶子结点:
我们只需要在先序遍历的输出语句的地方稍微改一改就行了:
![](https://i-blog.csdnimg.cn/blog_migrate/2a23912aa62d87c80772329c30921e71.png)
求二叉树的高度:
![](https://i-blog.csdnimg.cn/blog_migrate/ad03f4673228da74fc92cfa3ae5371be.png)
二元运算表达式树及其遍历:
由两种遍历序列确定二叉树:
![](https://i-blog.csdnimg.cn/blog_migrate/68d862514b85e5d53f8c20deb41936f5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c376d3a1af3ec4629d4a18d62e94c1c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/21999fd2e452b5a0f1d034a8102f4b18.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de488368a0c07e6065f615cb1a52341f.png)