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.
Example
Given a binary tree as follow:
1
/ \
2 3
/ \
4 5
The minimum depth is 2
.
分析:
这题看似简单,但是你写完程序run了以后发现通不过,再读一遍问题发现理解有错。如果上面的树没有2,可能很多人算出来的结果是1,因为左子树为空。但是实际上minimum depth 是 3. 意思就是说,只有一个node的左右节点都为空,我们才能认为这是结束点。
1 /** 2 * Definition of TreeNode: 3 * public class TreeNode { 4 * public int val; 5 * public TreeNode left, right; 6 * public TreeNode(int val) { 7 * this.val = val; 8 * this.left = this.right = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 /** 14 * @param root: The root of binary tree. 15 * @return: An integer. 16 */ 17 public int minDepth(TreeNode root) { 18 if (root == null) return 0; 19 20 if (root.left == null && root.right == null) return 1; 21 22 if (root.left == null) return minDepth(root.right) + 1; 23 if (root.right == null) return minDepth(root.left) + 1; 24 return Math.min(minDepth(root.left), minDepth(root.right)) + 1; 25 } 26 }