## 二叉树的前序、中序、后序遍历
![](https://img.kancloud.cn/45/56/45562cf138c7b1c81600b9fd2df8ef8a_227x360.png)
前序遍历A-B-D-F-G-H-I-E-C
中序遍历F-D-H-G-I-B-E-A-C
后序遍历F-H-I-G-D-E-B-C-A
前序(根左右),中序(左根右),后序(左右根)
>小技巧
先在前序和后续找到根节点
前序:第一个元素是根,
后序:最后一个元素是根
中序:根据根节点,判断左右子树
eg:已知某二叉树的中序遍历为F-D-H-G-I-B-E-A-C,后序遍历为F-H-I-G-D-E-B-C-A,请还原这颗二叉树
1、根据后序得知 A为根节点,
2、根据中序得知 C为A的右子树,结合后序得知 B为A的左子树(B、C为左右子树根节点)
3、此时,左子树根节点为B,中序得知 E 在B的右子树,F-D-H-G-I在B的左子树
4、此时中序剩余:F-D-H-G-I,后序剩余:F-H-I-G-D
5、由4,后序得知,D为根节点,中序得知F为D的左子树,H-G-I为右子树,D是B的左子树
6、此时中序剩余:H-G-I,后序剩余:H-I-G
7、由6,后序得知,G为根节点,挂到D下面;中序得知:H为G的左子树,I为G的右子树
![](https://img.kancloud.cn/60/9a/609a3c4f912d8fb1e3b465410f0c0616_845x721.png)
- Go准备工作
- 依赖管理
- Go基础
- 1、变量和常量
- 2、基本数据类型
- 3、运算符
- 4、流程控制
- 5、数组
- 数组声明和初始化
- 遍历
- 数组是值类型
- 6、切片
- 定义
- slice其他内容
- 7、map
- 8、函数
- 函数基础
- 函数进阶
- 9、指针
- 10、结构体
- 类型别名和自定义类型
- 结构体
- 11、接口
- 12、反射
- 13、并发
- 14、网络编程
- 15、单元测试
- Go常用库/包
- Context
- time
- strings/strconv
- file
- http
- Go常用第三方包
- Go优化
- Go问题排查
- Go框架
- 基础知识点的思考
- 面试题
- 八股文
- 操作系统
- 整理一份资料
- interface
- array
- slice
- map
- MUTEX
- RWMUTEX
- Channel
- waitGroup
- context
- reflect
- gc
- GMP和CSP
- Select
- Docker
- 基本命令
- dockerfile
- docker-compose
- rpc和grpc
- consul和etcd
- ETCD
- consul
- gin
- 一些小点
- 树
- K8s
- ES
- pprof
- mycat
- nginx
- 整理后的面试题
- 基础
- Map
- Chan
- GC
- GMP
- 并发
- 内存
- 算法
- docker