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