111.Minimum Depth of Binary Tree
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.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
方法一:采用层次遍历的方式,设置一个值记录层,遍历到的第一个叶子节点的高度就是这棵二叉树的最小深度。
public int minDepth(TreeNode root) {
if(root == null) return 0;
int count = 0;
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
while(!q.isEmpty()){
count++;
for(int i = 0, n = q.size(); i < n; i++){
TreeNode node = q.poll();
if(node.left == null && node.right == null) return count;
if(node.left != null) q.add(node.left);
if(node.right != null) q.add(node.right);
}
}
return count;
}
方法二:采用递归的方式,把问题转化为子树的最小深度。
public int minDepth2(TreeNode root) {
if(root == null) return 0;
int left = minDepth(root.left);
int right = minDepth(root.right);
return (left == 0 || right == 0) ? left + right + 1: Math.min(left,right) + 1;
}