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
.
因为该题目需要记录到叶子节点的最短的距离,因此在使用分治的方法进行计算时,在设定初始的左子树、右子树的长度的时候,需要将数据
设定为最大值。这是这个题目处理时的一个小技巧。
java
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/*
* @param root: The root of binary tree
* @return: An integer
*/
public int minDepth(TreeNode root) {
// write your code here
if (root == null) {
return 0;
}
return findMin(root);
}
private int findMin(TreeNode root) {
if (root.left == null && root.right == null) {
return 1;
}
int left = Integer.MAX_VALUE, right = Integer.MAX_VALUE;
if (root.left != null) {
left = findMin(root.left);
}
if (root.right != null) {
right = findMin(root.right);
}
return Math.min(left, right) + 1;
}
}