题目描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
算法1
递归计算每个节点的最小深度
与前面最大深度不同的点在于,对于最大深度不需要判断当前节点的左右节点是否为空,因为每次返回的是最大值
而最小深度每次返回的是左右的最小值,因此假如左/右子树直接为空时,直接返回最小值会覆盖掉原本的正确答案
因此每次递归需要判断左右两边子节点是否为空.
java 代码
class Solution {
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(minDepth(root.left), minDepth(root.right)) + 1;
}
}