题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/61b77ef54eff48e7ba33f0b0ad799f7e.png)
解析
- 迭代
- 第一,确定所求的和题目要求返回的是否为同一个东西,并且所传入的参数是否也相同,如果相同就可以在原函数递归,否则新建函数
- 第二,确定中止条件,root为空
- 第三,确定中间逻辑
- 我们要求的是最小深度,所以我们的函数就是可以求出最小深度的函数
- 呢么我们拿到一个节点,就要求它左节点最小深度,求右节点最小深度
- 如果其中一个节点为null,呢么它的深度为0,整体的深度就是另一个节点的深度,也就是返回另一个深度 + 1,因为比此节点多了一层所以+1
- 最后的情况就是左右都不为空,呢就返回两个里面的最小值+1
class Solution {
public int minDepth(TreeNode root) {
if (root == null) {
return 0;
}
int depthL = minDepth(root.left);
int depthR = minDepth(root.right);
if (root.left == null || root.right == null) {
return depthL + depthR + 1;
}
return Math.min(depthL, depthR) + 1;
}
}