前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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.
这个题目可以用DFS或者BFS做,用BFS做应该是最快的。DFS存在陷入最深的分支情况。Leetcode提交好像出问题了?看不到自己提交的detailpublic class Solution {
public int minDepth(TreeNode root) {
if(root == null) return 0;
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
int depth = 0;
while(queue.peek() != null){
boolean getTheDepth = true;
int size = queue.size();
while(size > 0){
root = queue.poll();
if(root.right != null)queue.offer(root.right);
if(root.left != null)queue.offer(root.left);
if(root.right == null && root.left == null){
getTheDepth = false;
break;
}
size --;
}
depth ++;
if(!getTheDepth) break;
}
return depth;
}
}