这道题是LeetCode里的第111道题。
题目描述:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树
[3,9,20,null,null,15,7]
,3 / \ 9 20 / \ 15 7返回它的最小深度 2.
递归解决。调用最小值函数 Math.min(x, y) 或者 三目运算符 expression ? true : false。
解题代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int minDepth(TreeNode root) {
if(root==null)return 0;
int left=minDepth(root.left);
int right=minDepth(root.right);
return (left!=0&&right!=0)?1+Math.min(left,right):1+left+right;
}
}
提交结果:
个人总结:
不使用变量的效率:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int minDepth(TreeNode root) {
if(root == null)return 0;
if(root.left == null && root.right != null)
return minDepth(root.right) + 1;
if(root.right == null && root.left != null)
return minDepth(root.left) + 1;
return minDepth(root.left) + 1 > minDepth(root.right) + 1 ? minDepth(root.right) + 1 : minDepth(root.left) + 1;
}
}