题目:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
解题思路:一共有四种情况:1.根节点为空,返回0;
2.根节点不为空,根节点的左树和右树为空,返回1:
3.根节点不为空,根节点的左树或右树为空,因为不确定左树还是右树为空所以把左树和右树加起来再加上根节点:
4.根节点不为空,根节点的左树和右树也不为空,利用Math函数的Min方法,找到将左树和右树做比较,找到比较小的那棵树加上根节点。
代码实现:
class Solution {
public int minDepth(TreeNode root) {
TreeNode cur = root;
if (root == null) return 0;
if (root.left==null&&root.right==null)return 1;
int leftTree = minDepth(root.left);
int rightTree = minDepth(root.right);
if (leftTree==0||rightTree==0)return leftTree+rightTree+1;
return Math.min(leftTree,rightTree)+1;
}
}