111. 二叉树的最小深度(BFS)


111. 二叉树的最小深度

题目

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。
在这里插入图片描述
提示:

  • 树中节点数的范围在 [0, 105] 内
  • -1000 <= Node.val <= 1000

解题思路

这题一看要求最短路径,第一反应就是BFS。 这题很简单直接套用BFS模板就行了。

代码

class Solution {
        public int minDepth(TreeNode root) {
        Queue<TreeNode> queue=new LinkedList<>();//核心数据结构
        if(root==null){
            return 0;
        }
        queue.add(root);//首先把根节点给加到队列中
        int step=0;//初始化步数为0

        while(!queue.isEmpty()){//当队列不空的时候
            step++;//首先步数加一,之所以写在最前面,是因为把root放入队列这也算一步
            int size=queue.size();
            /* 将当前队列中的所有节点向四周扩散 */
            while(size-->0){
                TreeNode tree=queue.poll();
                if(tree.left==null&&tree.right==null){//满足目标直接返回
                    return step;
                }

                if(tree.left!=null){//如果它有节点就把节点放入队列
                    queue.add(tree.left);
                }
                if(tree.right!=null){
                    queue.add(tree.right);
                }
            }
        }
        return -1;
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录