遍历的含义就是把树的所有节点(Node)按照某种顺序访问一遍。包括前序,中序,后续,广度优先(队列),深度优先(栈)5 种遍历方法。之所以叫前序、中序、后序遍历,是因为根节点在前、中、后。
数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。
| 遍历方法 | 顺序 | 示意图 | 顺序 | 应用 |
|---|---|---|---|---|
| 前序 | 根 ➜ 左 ➜ 右 | ![]() | 12457836 | 想在节点上直接执行操作(或输出结果)使用先序 |
| 中序 | 左 ➜ 根 ➜ 右 | ![]() | 42758136 | 在二分搜索树中,中序遍历的顺序符合从小到大(或从大到小)顺序的 要输出排序好的结果使用中序 |
| 后序 | 左 ➜ 右 ➜ 根 | ![]() | 47852631 | 后续遍历的特点是在执行操作时,肯定已经遍历过该节点的左右子节点 适用于进行破坏性操作 比如删除所有节点,比如判断树中是否存在相同子树 |
| 广度优先 | 层序,横向访问 | ![]() | 12345678 | 当树的高度非常高(非常瘦) 使用广度优先剑节省空间 |
| 深度优先 | 纵向,探底到叶子节点 | ![]() | 12457836 | 当每个节点的子节点非常多(非常胖),使用深度优先遍历节省空间 (访问顺序和入栈顺序相关,相当于先序遍历) |











![[AHK]编写Dialog类代替内置的InputBox命令](https://i-blog.csdnimg.cn/direct/44df13330cad47d3ab655a31b2395dea.png)


![[C高手编程] const, volatile, register, inline: 修饰符与关键字全面解析](https://i-blog.csdnimg.cn/direct/6a1c008a19d2442896c277f3baa6954f.png#pic_center)









