13-二叉树最小深度-深度优先(DFS)

一、定义

什么是二叉树的最小深度?

二叉树的最小深度是指从根节点到最近的叶子节点的最短路径上的节点数。叶子节点是指没有子节点的节点。

举个例子:

     1/ \2   3/ 4

这棵树的最小深度是 2,因为从根节点 1 到叶子节点 3 的路径最短,只需要经过 1 和 3 两个节点。


深度优先搜索(DFS)的思路

深度优先搜索是一种遍历树的方法,它的特点是一条路走到底,直到遇到叶子节点或者无法继续前进时,再回溯到上一个节点,尝试其他路径。

用 DFS 求最小深度的步骤如下:

  1. 从根节点开始,递归地遍历它的左子树和右子树。

  2. 如果当前节点是叶子节点(即没有左子树和右子树),返回深度 1。

  3. 如果当前节点只有左子树或右子树,继续递归遍历存在的子树。

  4. 如果当前节点有左右子树,分别递归计算左右子树的最小深度,然后取较小的那个,再加上当前节点的深度 1。

  5. 最终返回最小深度


举个例子

假设我们有一棵树:

     1/ \2   3/ \4   5

用 DFS 计算最小深度的过程如下:

  1. 从根节点 1 开始,递归遍历左子树 2

    • 节点 2 是叶子节点,返回深度 1。

  2. 递归遍历右子树 3

    • 节点 3 有左右子树,递归遍历左子树 4

      • 节点 4 是叶子节点,返回深度 1。

    • 递归遍历右子树 5

      • 节点 5 是叶子节点,返回深度 1。

    • 节点 3 的最小深度是 min(1, 1) + 1 = 2

  3. 根节点 1 的最小深度是 min(1, 2) + 1 = 2

所以这棵树的最小深度是 2。

二,举例

计算该二叉树的最小深度:

            1/ \2   3/ \   \4   5   6\7
import javax.swing.tree.TreeNode;public class demo01 {public static void main(String[] args) {TreeNode node7 =new TreeNode(7,null,null);TreeNode node6 =new TreeNode(6,node7,null);TreeNode node5 =new TreeNode(5,null,null);TreeNode node4 =new TreeNode(4,null,null);TreeNode node3 =new TreeNode(3,node6,null);TreeNode node2 =new TreeNode(2,node4,node5);TreeNode node1 =new TreeNode(1,node2,node3);System.out.println(minDepth(node1));}public static int minDepth(TreeNode root) {if (root == null) {return 0;}if (root.left == null && root.right == null) {return 1;}int min=Integer.MAX_VALUE;if(root.left != null) {                      //左边节点不为空min=Math.min(minDepth(root.left),min);    //算出左边节点}if(root.right != null) {                        //左边节点不为空min=Math.min(minDepth(root.right),min);   //算出左边节点}return min+1;}static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val,TreeNode left,TreeNode right) {this.val = val;this.left = left;this.right = right;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20282.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

罗德与施瓦茨ZNB20,矢量网络分析仪9KHz-20GHz

罗德与施瓦茨ZNB20矢量网络分析仪9KHz-20GHz R&SZNB20矢量网络分析仪 产品型号: ZNB20 产品品牌:罗德与施瓦茨 R&S 产品名称: 矢量网络分析仪 频率范围:9kHz - 20GHz R&S ZNB 矢量网络分析仪 良好的测量速度、动态范围和操作方便性&am…

axios post请求 接收sse[eventsource]数据的

axios 接收sse数据的 axios 接收sse数据的 EventSource什么 基于 HTTP 协议实现,通过与服务器建立一个持续连接,实现了服务器向客户端推送事件数据的功能。在客户端,EventSource 对象通过一个 URL 发起与服务器的连接。连接成功后&#xff0…

Python----数据结构(双向链表:节点,是否为空,长度,遍历,添加,删除,查找,循环链表)

一、双向链表 1.1、概念 双向链表是一种链表数据结构,每个节点除了包含指向下一个节点的指针外,还包含指向前一个节点的指针。这种特性使得在双向链表中,可以从任意一个节点开始,向前或向后遍历链表。 1.2、特点 • 既可以从…

VScode内接入deepseek包过程(本地部署版包会)

目录 1. 首先得有vscode软件 2. 在我们的电脑本地已经部署了ollama,我将以qwen作为实验例子 3. 在vscode上的扩展商店下载continue 4. 下载完成后,依次点击添加模型 5. 在这里可以添加,各种各样的模型,选择我们的ollama 6. 选…

投资组合风险管理

投资组合风险管理 市场风险 信用风险流动性风险风险指标收益率波动率最大回撤 α \alpha α(詹森指数), β \beta β卡玛比率月胜率上/下行捕获比夏普比率索提诺比率经风险调整的收益率(𝑀2)特雷诺比率信息…

Mongodb数据管理

Mongodb数据管理 1.登录数据库,查看默认的库 [rootdb51~]# mongo> show databases; admin 0.000GB config 0.000GB local 0.000GB> use admin switched to db admin > show tables system.version > admin库:admin 是 MongoDB 的管理…

GTP3 大模型

GTP3 大模型 模型架构训练核心思想 GTP3 : OpenAI 在 2020 年 5 月发布 GPT-3,发表 Language Models are Few-Shot Learner理念:Few-Shot 思想 , 用少量样本微调,让模型更准确 参数 : 最大模型 : 1750 亿参数多头 Transformer : 96 层Head…

神经网络实验——MLP

目录 1 目的 2 方法 3 源代码 4 结果 1 目的 ①熟悉 Python 的输入输出流; ②学会使用 matplotlib进行图像可视化; ③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器; ④学会使用网格查找进行超参数优…

Cursor 无限续杯

最近DeepSeek官网无法访问,导致DeepSeekCLine绑定的API Key也无法使用了。那么,除了DeepSeek,还有没有其他好用的AI编程工具呢?答案当然是Cursor!不过,由于各种原因一直没有用上Cursor,也不知道…

Windows本地部署DeepSeek

文章目录 一、准备工作1、准备服务器2、准备APP 二、部署deepseek-r11、脚本部署2、脚本部署 三、ChatBox集成 一、准备工作 1、准备服务器 本案例使用Windows电脑 2、准备APP Download Ollama Download Chatbox 二、部署deepseek-r1 1、脚本部署 双击安装完Ollama,默认…

QML 自定义矩形框Rectangle,实现四个边框自定义大小

一、自定义矩形 效果图 边框大小为:左2 上2 右5 下10 简单来说,就是定义两个矩形,一个在外边一个在内部; 再通过设置他们的边距,即可设置相应的边框宽度; 1.编码 新建空的qml文件 MyRectangle.qml im…

筛选相同项

# import os # import pandas as pd# # 文件路径,根据实际情况修改 # file_path_1 rC:\Users\Administrator\Desktop\python\文件1.xlsx # file_path_2 rC:\Users\Administrator\Desktop\python\文件2.xlsximport os import pandas as pd# 获取当前脚本所在的目录…

MVTEC数据集笔记

前言 网上的博客只有从论文里摘出的介绍,没有数据集文件详细的样子,下载数据集之后,对数据集具体的构成做一个补充的笔记。 下载链接:https://ai-studio-online.bj.bcebos.com/v1/7d4a3cf558254bbaaf4778ea336cb14ed8bbb96a7f2a…

Bom详解和Dom详解

Javascript的数据类型 1.BOM(浏览器对象模型)1.1window对象(1)全局作用域:(2)窗口属性:(3)弹窗和对话框:(4)定时器:(5)导航和历史:(6)打开和关闭窗口: 1.2navigator对象(1)浏览器信息属性:(2)浏…

Android 虚拟机与ClassLoader类加载笔记

1 Android虚拟机 在介绍Android的虚拟机之前,我们先来看一下JVM虚拟机之下,我们的class文件的字节码指令的Demo: public class Demo {public static void test() {int a 1;int b 2;int c a b;} } 将Demo.class文件使用命令&#xff1a…

STM32 HAL库USART串口DMA IDLE中断编程:避坑指南

HAL_UART_Receive接收最容易丢数据了,STM32 HAL库UART查询方式实例 可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,STM32 HAL库USART串口中断编程:演示数据丢失, 需要在此基础优化一下. STM32F103 HAL库USART串口…

NBT群落物种级丰度鉴定新方法sylph

文章目录 简介为什么选择Sylph?Sylph的工作原理 Install使用解析成gtdb格式sylph 能做什么?sylph 不能做什么?ANI定义如何使用 sylph-utils 生成包含分类信息的配置文件耗时:66个样本耗时1h 转成easymicroplot可用数据 简介 Sylp…

VLM 系列——Qwen2.5 VL——论文解读——前瞻(源码解读)

引言 20250212苹果突然被爆将与阿里巴巴合作为中国 iPhone 用户开发人工智能功能。苹果从 2023 年就已经开始测试各类中国头部 AI 大厂开发的 AI 模型。去年,原本选定百度作为主要合作伙伴,但双方的合作并不顺利,百度为“Apple Intelligence”…

DeepSeek R1原理

文章目录 DeepSeek R1原理强化学习介绍Policy ModelCritic ModelReward Model三者关系智能体包含的内容环境包含的内容 知识蒸馏简介数据蒸馏Logits 蒸馏特征蒸馏 训练流程DeepSeek-R1-Zero 训练策略与价值设计奖励方式训练模板**实验观察到模型自我进化**缺点 DeepSeek-R1 训练…

如何使用DeepSeek + PlantUML/Mermaid 生成专业图表

目录 一、工具简介 1.1 DeepSeek简介 1.2 PlantUML简介 1.3 Mermaid在线工具简介 二、在DeepSeek中生成Mermaid语法 2.1 编写提示词 2.2 示例输出 2.3 访问Mermaid在线编辑器 三、在DeepSeek中生成PlantUML语法 3.1 编写提示词 3.2 示例输出 3.3 访问PlantUML在线编…