思路:
1.DFS
/**
* 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 root.left == null? 1 + minDepth(root.right) : 1 + minDepth(root.left);
}
return 1 + Math.min(minDepth(root.left),minDepth(root.right));
}
}
2.BFS
/**
* 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) {
//bfs效率
if(root == null){
return 0;
}
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
int level = 1;
int c = 0;
int size = queue.size();
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(node.left == null && node.right == null){
return level;
}
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
// System.out.println("--"+node.val);
c++;
if(c == size){
c = 0;
size = queue.size();
// System.out.println("--------level"+level);
level++;
}
}
return level;
}
}