最近几天的每日一题都不会,做不出来,看题解都用动态规划,状态转移方程我也不知道题解是怎么推出来的,我就做了几个简单题,然后这个题还是比较有意思的,因为我改了两次才过,这个题要注意的就是要判断是不是叶结点。
public int minDepth(TreeNode root) {
return visit(root,0);
}
int visit(TreeNode root,int deep){
if(root.left==null&&root.right==null)return deep;
deep++;
if(root.left==null)return visit(root.right,deep);
if(root.right==null)return visit(root.left,deep);
return Math.min(visit(root.left,deep),visit(root.right,deep));
}
这个题比较简单,所以我把题解也放在下面,虽然都是递归但是思路不太一样。
public int minDepth(TreeNode root) {
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return 1;
}
int min_depth = Integer.MAX_VALUE;
if (root.left != null) {
min_depth = Math.min(minDepth(root.left), min_depth);
}
if (root.right != null) {
min_depth = Math.min(minDepth(root.right), min_depth);
}
return min_depth + 1;
}
|