给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回它的最小深度 2.
这个与 二叉树的最大深度 不同,需要考虑如图的情况。
public int minDepth(TreeNode root) {
if (root == null) return 0;
// 如果左边 == null 右边 != null 就算右边的最小高度(因为没有左边所以不用Math.min() 取最小,
// 因为没有另一边,所以就是它了) + 1 (1 为根)
if (root.left == null)
return minDepth(root.right) + 1;
// 到这说明左边不是null
// 所以是 右边是null ,而左边不是null 的情况
// 由于只有一边,即左边,所以就算左边的最小值 + 1 (1 为根)
if (root.right == null)
return minDepth(root.left) + 1;
// 两边都不为null 就取最小的 + 1 (1 为根)
return 1 + Math.min(minDepth(root.left),minDepth(root.right));
}