二叉树的最小深度*简单
题目
二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点.
输入:root = [3,9,20,null,null,15,7]
输出:2
示例2:
输入:root = [2,null,3,null,4,null,5,null,6]
输出:5
提示:
- 树中节点数的范围在 [0, 105] 内
- -1000 <= Node.val <= 1000
dfs
分析
主要思路:记得之前碰到过找二叉树的最大深度;递归思路基本一致,但是需要注意最小深度是指根节点到叶子节点,因此碰到示例2的情况不能返回1;在返回的时候需要考虑三种情况:
- 当左节点为null,并且右节点为null,则返回本叶子节点的深度;
- 当左右节点某一个为null,则返回不为null的节点深度;
- 当左右节点都不为null,则返回两者最下的节点深度;
代码 7ms 58.8MB
public int minDepth(TreeNode root) {
if(root == null) return 0;
int left = minDepth(root.left);
int right = minDepth(root.right);
if (left == 0 || right == 0) return left + right +1;
return Math.min(right, left)+1;
}