111. 二叉树的最小深度 简单 广搜 递归
Published on 2022-11-17 23:01 in 暂未分类 with 林动

111. 二叉树的最小深度 简单 广搜 递归

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

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

    说明:叶子节点是指没有子节点的节点。

    示例 1:

    输入:root = [3,9,20,null,null,15,7]
    输出:2
    示例 2:

    输入:root = [2,null,3,null,4,null,5,null,6]
    输出:5

    提示:

    树中节点数的范围在 [0, 105] 内
    -1000 <= Node.val <= 1000
    通过次数392,013提交次数778,508

    广搜
    import java.util.LinkedList;
    
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, TreeNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    class Solution {
        public int minDepth(TreeNode root) {
            if(root==null)return 0;
            Queue<TreeNode> q=new LinkedList<>();
            Queue<Integer> nq=new LinkedList<>();
            q.offer(root);
            nq.offer(1);
            while(!q.isEmpty()){
            	TreeNode t=q.poll();
            	int d=nq.poll();
            	if(t.left==null&&t.right==null)return d;
            	if(t.left!=null){
            		q.offer(t.left);
            		nq.offer(d+1);
            	}
            	if(t.right!=null){
            		q.offer(t.right);
            		nq.offer(d+1);
            	}
            }
            return 0;
        }
    }
    
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, TreeNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    class Solution {
        public int minDepth(TreeNode root) {
            if(root==null)return 0;
            int l=minDepth(root.left);
            int r=minDepth(root.right);
            if(l==0&&r==0)return 1;
            if(l==0||r==0)return Math.max(l,r)+1;
            return Math.min(l,r)+1;
        }
    }
    
    posted @   林动  阅读(15)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    点击右上角即可分享
    微信分享提示