leetcode111. 二叉树的最小深度

问题描述:

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

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

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

示例:

给定二叉树 3,9,20,null,null,15,7,

3

/ \

9 20

/ \

15 7

返回它的最小深度 2.

思路:见代码

上代码,拿去即可运行:

java 复制代码
package onlyqi.daydayupgo06.leetcode;
 
public class TreeNode {
 
    private Integer value;
    private TreeNode left;
    private TreeNode right;
 
 
    public TreeNode() {
    }
 
    public TreeNode(Integer value) {
        this.value=value;
    }
 
    public TreeNode(Integer value, TreeNode left, TreeNode right) {
        this.value = value;
        this.left = left;
        this.right = right;
    }
 
    public Integer getValue() {
        return value;
    }
 
    public void setValue(Integer value) {
        this.value = value;
    }
 
    public TreeNode getLeft() {
        return left;
    }
 
    public void setLeft(TreeNode left) {
        this.left = left;
    }
 
    public TreeNode getRight() {
        return right;
    }
 
    public void setRight(TreeNode right) {
        this.right = right;
    }
}
java 复制代码
    public static void main(String[] args) {
        TreeNode treeNode1 = new TreeNode(1);
        TreeNode treeNode2 = new TreeNode(2);
        TreeNode treeNode3 = new TreeNode(3);
        TreeNode treeNode4 = new TreeNode(4);
        TreeNode treeNode5 = new TreeNode(5);
        TreeNode treeNode6 = new TreeNode(6);
        TreeNode treeNode7 = new TreeNode(7);
        treeNode2.setLeft(treeNode4);
        treeNode2.setRight(treeNode5);
        treeNode1.setLeft(treeNode2);
        treeNode1.setRight(treeNode3);
        treeNode5.setLeft(treeNode6);
//        treeNode3.setLeft(treeNode7);

        System.out.println(getHeightBFS1(treeNode1));

    public static int getHeightBFS1(TreeNode root) {
        if (root == null) return 0;

        int height = 0;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            int levelSize = queue.size();
            height++;

            for (int i = 0; i < levelSize; i++) {

                TreeNode node = queue.poll();
                if (node.getLeft() == null && node.getRight() == null) {
                    return height;
                }
                if (node.getLeft() != null) queue.offer(node.getLeft());
                if (node.getRight() != null) queue.offer(node.getRight());
            }
        }
        return height;
    }
}

运行结果:

我要刷300道算法题,第142道 。 尽快刷到200,每天搞一道 。

相关推荐
非优秀程序员9 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
武子康15 小时前
驾驶轨迹换个坐标,就能给移动机器人用吗?
人工智能·算法·机器学习
David猪大卫15 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
vvilkim17 小时前
数据结构类型、区别与应用场景:一篇讲透选型逻辑
数据结构
lisw0521 小时前
Dayhoff的PAM替换矩阵理论评介!
线性代数·算法·矩阵
阿卡好可爱1 天前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua
一起学安全技术1 天前
拆大模型 03|注意力的一句话版本:不用论文讲清 Attention
深度学习·算法·语言模型·transformer
Delightrs1 天前
Rust LeetCode238 算法题解
开发语言·算法·rust
自信150413057591 天前
重生之从0开始学习c++之——vector-中篇
c++·学习·算法