寻找给定的树的最小深度,这里用的是宽搜做的,水题,但是这里有两个点需要注意:
1.会给出空树 (题目表达是:[] 就是root是 null )
2.对于[1,2]这种情况需要注意最小的深度不是1,因为叶节点是没有子节点的节点,而要找的深度是根节点和叶节点的深度 ,也就是root 和 左右子树都是 null 的节点显然 1(root) 节点不符合这种情况 而2 符合。所以深度是1-2 就是2;
上代码:
public int minDepth(TreeNode root) {
int deep = 0;
if(root == null) return 0;
newNode newroot = new newNode(1,root);
ConcurrentLinkedQueue<newNode> que = new ConcurrentLinkedQueue<newNode>();
que.add(newroot);
while(!que.isEmpty())
{
newNode temp = que.poll();
deep = temp.deep;
if(temp.node.left == null && temp.node.right == null)
{
break;
}else
{
if(temp.node.left != null)
que.add(new newNode(temp.deep+1,temp.node.left));
if(temp.node.right != null)
que.add(new newNode(temp.deep+1,temp.node.right));
}
}
return deep;
}
class newNode{
int deep;
TreeNode node;
newNode(int deep ,TreeNode node){
this.deep = deep;
this.node = node;
}
}