题目:Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
思路:采用递归的思想,需要注意的是最小深度与最大深度的区别:对于最大深度,不需要考虑当前子树是否为单子树(即一侧子树深度为0)的情况,即最大深度一直等于左右子树的最大值;对于最小深度,需要考虑当前子树是否为单子树的情况,对于双子树,其最小深度为左右子树的最小值,对于单子树,其最小深度为左右深度的最大值(因为有一侧的子树为0)。代码中加1的原因是加上根节点这一层。
代码:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public int run(TreeNode root) { if(root == null){ return 0; } if(root.left == null && root.right == null){ return 1; } if(root.left == null){ return run(root.right)+1; } if(root.right == null){ return run(root.left)+1; } if( root.left != null && root.right != null){ int leftDepth = run(root.left)+1; int rightDepth = run(root.right)+1; return (leftDepth>rightDepth)?rightDepth:leftDepth; } return 0; } }