Leetcode二叉树
题目列表
| 题目 | 难度 |
|---|---|
| 94. 二叉树的中序遍历 | 简单 |
| 100. 相同的树 | 简单 |
| 101. 对称二叉树 | 简单 |
| 104. 二叉树的最大深度 | 简单 |
| 108. 将有序数组转换为二叉搜索树 | 简单 |
| 110. 平衡二叉树 | 简单 |
| 111. 二叉树的最小深度 | 简单 |
| 112. 路径总和 | 简单 |
| 144. 二叉树的前序遍历 | 简单 |
| 145. 二叉树的后序遍历 | 简单 |
| 226. 翻转二叉树 | 简单 |
| 235. 二叉搜索树的最近公共祖先 | 简单 |
| 257. 二叉树的所有路径 | 简单 |
| 404. 左叶子之和 | 简单 |
分析与总结
先不谈二叉树的三种递归遍历以及非递归遍历,以及必须掌握的层序遍历
boolean类型
在100.相同的树,101.对称二叉树,112.路径总和 中,要求返回的是boolean类型,于是在设计递归程序的时候直接就返回了相关的逻辑值,100和101发现false直接返回,所以使用的是&&,而112是发现true直接返回,所以使用||
int值
在104.二叉树的最大深度,110.平衡二叉树,111.二叉树的最小深度,404.左叶子之和中,本质上要求返回的都是int值,于是设计递归的程序的时候直接返回的递归结果的值
- 其他类型
Leetcode的前,中,后序遍历都要求结果保存在一个List中,这返回起来有点复杂,所以我们直接把List写成是全局变量,然后再创建一个void函数遍历二叉树,而主函数只需要调用void函数即可,这样写清晰快捷
- 区间思路
在98.验证二叉搜索树, 108.将有序数组转换为二叉搜索树,654.最大二叉树 中都涉及到了单独创建一个函数,以不断地确定二叉树的left和right,即上下边界的思路
特别注意到,在求二叉树的最大or最小深度时,都是从下往上的遍历思路,遍历到null时设置为0


